@configuration 和@component注解的使用区别

@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));
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章