4장 의존 자동 주입
- 의존 자동 주입
- @Autowired : 주로 사용
- @Resource
4-1. @Autowire 통한 의존 자동 주입
- 스프링은 타입이 일치하는 빈 객체를 찾아서 주입한다.
4-2. 일치하는 빈이 없는 경우
4-3. 자동 주입 가능한 빈이 두 개 이상
- @Qualifier
- 자동 주입 대상 빈을 한정할 수 있다.
- 사용가능한 대상
- 빈 이름으로 찾기 : 한정자
@Configuration
public class chap4 {
@Bean
public MemberPrinter printer(){
return new MemberPrinter();
}
@Bean
@Qualifier("printerExam2")
public MemberPrinter printer2(){
return new MemberPrinter();
}
@Bean
public MemberPrinterExam2 infoPrinter(){
return infoPrinter;
}
}
- 한정자
- printer : printer
- printer2 : printerExam2(@Qualifier)
- infoPrinter : infoPrinter
4-4. 상위/하위 타입 관계
- B1 extends A
- B2 extends A
- 에러가 발생한다.
- B클래스가 A클래스를 상속했기 때문
- A 타입 빈응 주입해야 할 때, B1을 주입할지, B2를 주입할지 알 수 없다.
- @Configuration public class C { @Bean public A examA{ return new A(); } @Bean public B1 examB{ return new B1(); } @Bean public B2 examB{ return new B2(); } }
4-5. @Autowired 필수 여부
- @Autowired(reqired=false) : 필수가 아닌 경우
- 자동 주입 대상타입 : Optional
- 일치하는 값이 없으면 인자를 전달(에러발생X)
- 일치하면 전달
- @Nullable
댓글