본문 바로가기
공부/Spring

[chap4] 의존 자동 주입

by JERO__ 2022. 5. 20.

4장 의존 자동 주입

  • 의존 자동 주입
    • @Autowired : 주로 사용
    • @Resource

4-1. @Autowire 통한 의존 자동 주입

  • 스프링은 타입이 일치하는 빈 객체를 찾아서 주입한다.

4-2. 일치하는 빈이 없는 경우

  • 실행되지 않음. (에러)

4-3. 자동 주입 가능한 빈이 두 개 이상

  1. @Qualifier
  • 자동 주입 대상 빈을 한정할 수 있다.
  • 사용가능한 대상
    • @Bean
    • @Autowired
  1. 빈 이름으로 찾기 : 한정자
@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

댓글