4장 의존 자동 주입
- 의존 자동 주입
- @Autowired : 주로 사용
- @Resource
4-1. @Autowire 통한 의존 자동 주입
- 스프링은 타입이 일치하는 빈 객체를 찾아서 주입한다.
4-2. 일치하는 빈이 없는 경우
- 실행되지 않음. (에러)
4-3. 자동 주입 가능한 빈이 두 개 이상
- @Qualifier
- 자동 주입 대상 빈을 한정할 수 있다.
- 사용가능한 대상
- @Bean
- @Autowired
- 빈 이름으로 찾기 : 한정자
@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
- Optional로 감싸는 것과 비슷하다.
'공부 > Spring' 카테고리의 다른 글
[chap6] 빈 라이프사이클과 범위 (0) | 2022.05.20 |
---|---|
[chap5] 컴포넌트 스캔 (0) | 2022.05.20 |
[chap3] 스프링 DI (0) | 2022.05.20 |
[chap2] 스프링 (0) | 2022.05.20 |
JdbcTemplate를 사용하는 이유 (3) | 2022.05.08 |
댓글