-
[개념공부] @Qualifier코딩공부/개념공부 2023. 2. 1. 22:46반응형
Qualifier
스프링은 @Autowired를 사용해 의존성을 주입한다
bean설정 시 <contxet:annotation-config/>를 사용해 구디 bean 태그 안에 <constructor-arg>나 <property> 태그를 추가하지 않아도 스프링의 @Autowired 어노테이션이 적용된 생성자, 필드, 메소드에 대해 의존 자동 주입을 처리한다
만약 동일한 타입을 가진 bean 객체가 두개가 있다면?
=>
* 스프링이 어떤 빈을 주입해야 하는지 알 수 없기 때문에 스프링 컨테이너를 초기화 하는 과정에서 Exception이 발생
* @Autowired의 주입 대상이 하나여야 하는데 실제로는 두 개 이상의 빈이 존재해 주입할 때 사용할 객체를 선택 불가
* 단, @Autowired가 적용된 필드나 설정 메서드의 property 이름과 같은 이름을 가진 빈 객체가 존재할 경우 이름이 같은 빈 객체를 주입받음
< SO >
이러한 문제를 해결하기 위해 Qualifier 어노테이션을 사용한다
* @Qualifier
* 사용할 의존 객체를 선택할 수 있도록 해줌
* 설정에서 bean의 한정자 값을 설정
* @Autowired가 적용된 주입 대상에 @Qualifier을 설정
* 이 때 @Qualifier의 값으로 앞서 설정한 한정자를 사용한다.
//// 스프링 @Autowired 적용시 의존 객체를 찾는 순서 ////
1. 타입이 같은 bean 객체를 검색 -> 1개면 해당 bean객체를 사용
* @Qualifier가 명시 되어있는 경우 같은 값을 갖는 bean 객체여야함
2. 탕비이 같은 bean 객체가 두 개 이상이고 @Qualifier가 없는 경우 이름이 같은 빈 객체를 찾는다
* 찾은 경우 그 객체를 사용
3. 타입이 같은 bean 객체가 두 개 이상이면 @Qualifier로 지정한 bean 객체를 찾는다
* 찾은 경우 그 객체를 사용
4. 위 경우 모두 해당되지 않으면 컨테이너가 Exception을 발생시킨다.
출처 : https://n1tjrgns.tistory.com/163반응형'코딩공부 > 개념공부' 카테고리의 다른 글
[개념공부 ]REST API (0) 2022.09.16 [개념공부]API (0) 2022.09.08 [개념공부]쿠키와 세션 (0) 2022.09.05 [개념공부]JWT (0) 2022.09.03