@Qualifier

leverest96·2022년 12월 7일
0

Spring / Java

목록 보기
4/20
post-thumbnail

동일한 타입을 가진 bean 객체가 2개라면 어떻게 될까?

스프링이 어떤 빈을 주입해야 할 지 알 수 없어서 스프링 컨테이너를 초기화하는 과정에서 Exception을 발생시킨다.

@Autowired의 주입 대상이 한 개여야 하는데 실제로는 두 개 이상의 빈이 존재해 주입할 때 사용할 객체를 선택할 수 없기 때문이다.

단, @Autowired가 적용된 필드나 설정 메서드의 property 이름과 같은 이름을 가진 빈 객체가 존재할 경우에는 이름이 같은 빈 객체를 주입받는다.

@Qualifier는 사용할 의존 객체를 선택할 수 있도록 해준다.

설정에서 bean의 한정자 값을 설정하고 @Autowired 어노테이션이 적용된 주입 대상에 @Qualifier 어노테이션을 설정한다.


스프링 @Autowired 어노테이션 적용시 의존 객체를 찾는 순서

  1. 타입이 같은 bean 객체를 검색하고 그것이 1개면 해당 bean 객체를 사용한다.

    • @Qualifier가 명시되어 있는 경우 같은 값을 갖는 bean 객체여야 한다.

2-1. 타입이 같은 bean 객체가 두개 이상이고, @Qualifier가 없는 경우 이름이 같은 빈 객체를 찾는다.

* 찾은 경우 그 객체를 사용한다.

2-2. 타입이 같은 bean 객체가 두개 이상이면, @Qualifier가 있는 경우 @Qualifier로 지정한 bean 객체를 찾는다.

* 찾은 경우 그 객체를 사용한다.
  1. 위 경우 모두 해당되지 않으면 컨테이너가 Exception을 발생시킨다
profile
응애 난 애기 개발자

0개의 댓글