@Configuration註解表明這個類是一個配置類。可以啓動組件掃描,用來將帶有@Bean的實體進行實例化bean等
把普通pojo實例化到spring容器中,相當於配置文件中的 <bean id="" class=""/>
結論:
當使用Configuration註解或者@component,並實體類使用了@data註解時,是同一個對象.
當使用Configuration註解或者@component,但是實體類不使用了@data註解時,不是同一個對象.
import lombok.Data;
/**
* @ClassName: Student
* @version: 1.0
* @description:
* @author: zhaonian
* @create: 2020-05-28 10:39
**/
@Data
public class Student {
private String id;
private String name;
private String sex;
}
import lombok.Data;
/**
* @ClassName: Teacher
* @version: 1.0
* @description:
* @author: zhaonian
* @create: 2020-05-28 10:40
**/
@Data
public class Teacher {
private String id;
private String name;
private String position;
private Student stu;
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* @ClassName: TestConfigure
* @version: 1.0
* @description:
* @author: zhaonian
* @create: 2020-05-28 10:40
**/
@Configuration
//@Component
public class TestConfigure {
@Bean
public Student student() {
Student stu = new Student();
stu.setId("1");
stu.setName("Tom");
stu.setSex("男");
return stu;
}
@Bean
public Teacher teacher() {
Teacher tea = new Teacher();
tea.setId("1");
tea.setName("Lily");
tea.setPosition("主任");
tea.setStu(student());
return tea;
}
}
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @ClassName: tets
* @version: 1.0
* @description:
* @author: zhaonian
* @create: 2020-05-28 10:41
**/
@RunWith(SpringRunner.class)
@SpringBootTest
public class tets {
@Autowired
private Student student;
@Autowired
private Teacher driver;
@Test
public void contextLoads() {
System.out.println("對象相等與否:" + driver.getStu().equals(student));
}
}