Spring - Component 자동주입
2020. 8. 27. 22:22ㆍJava/Spring
반응형
Component 빈 객체에도 @Autowired,@Qualifier,생성자 등을 이용해 자동주입이 가능하다.
1. @Autowired
@Autowired는 타입을 통해서 자동주입을 한다.
@Component
public class TestBean1 {
@Autowired
private DataBean1 data3;
}
위와 같이 @Autowired를 선언하면 data3에는 DataBean1 객체가 자동으로 주입이 된다.
2. @Qualifier
타입이 아닌 이름을 통해서도 주입이 가능하다.
@Component("obj1")
public class DataBean2 {
}
위와 같이 @Component("obj1")로 설정이 되어있으면 아래와 같이 @Qualifier를 이용해 obj1로 호출이 가능하다.
@Autowired
@Qualifier("obj1")
private DataBean2 data4;
하지만 하나의 객체당 하나의 Component만 선언 가능하므로 이름 호출은 큰 의미가 없다. 같은 빈 객체를 여러개 생성하고 싶으면 Beans.xml 또는 BeanConfigClass에 직접 빈 객체를 선언해주는게 좋다.
3. 생성자
생성자를 통한 주입에서는 아래 코드와 같이 객체는 별도의 설정 없이 타입을 통해서 자동 주입이 되고, 자료형은 @Value를 통해 값을 주입한다.
@Component
public class TestBean2 {
private int data1;
private String data2;
private DataBean1 data3;
private DataBean2 data4;
public TestBean2(@Value("100") int data1,@Value("문자열") String data2,DataBean1 data3,DataBean2 data4) {
this.data1 = data1;
this.data2=data2;
this.data3=data3;
this.data4=data4;
}
public int getData1() {
return data1;
}
public String getData2() {
return data2;
}
public DataBean1 getData3() {
return data3;
}
public DataBean2 getData4() {
return data4;
}
}
MainClass
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(BeanConfigClass.class);
TestBean1 t1 = ctx.getBean(TestBean1.class);
System.out.println("t1 getData3()=>"+t1.getData3());
System.out.println("t1 getData4()=>"+t1.getData4());
System.out.println("t1 getData5()=>"+t1.getData5());
TestBean2 t2 = ctx.getBean(TestBean2.class);
System.out.println("t2 getData1()=>"+t2.getData1());
System.out.println("t2 getData2()=>"+t2.getData2());
System.out.println("t2 getData3()=>"+t2.getData3());
System.out.println("t2 getData4()=>"+t2.getData4());
ctx.close();
}
}
반응형
'Java > Spring' 카테고리의 다른 글
Spring - execution 사용법 (0) | 2020.08.30 |
---|---|
Spring - AOP (0) | 2020.08.29 |
Spring- Component Bean 기본 설정 (0) | 2020.08.27 |
Spring - Component (0) | 2020.08.26 |
Spring - JSR-250 어노테이션 (0) | 2020.08.25 |