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

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