[Spring] 조회 대상 빈이 2개 이상인 경우

hi·2022년 11월 5일

@Autowired

  • 같은 타입 조회하여 매칭
  • 같은 타입이 두개 이상이면 필드 명, 파라미터 명으로 빈 이름 추가 매칭
    👉 필드 명을 빈 이름으로 변경하여 매칭

@Quilifier

@Qualifier("name")

  • 추가 구분자 사용
  • 빈 등록시 / 주입시 애노테이션 작성
    주입시 못 찾으면 같은 이름의 스프링 빈을 추가로 조회
    but, @Qualifier 를 찾는 용도로만 사용하는게 명확하고 좋음

순서

@Quilifier 끼리 매칭
-> 빈 이름 매칭
-> NoSuchBeanDefinitionException 예외 발생


@Primary

  • 우선순위를 정하는 방법
  • @Autowired 시에 여러 빈이 매칭되면 @Primary 가 우선권을 가진다.

🔎 우선순위

@Primary 는 기본값 처럼 동작 , @Qualifier 는 매우 상세하게 동작

스프링은 자동보다는 수동이, 넒은 범위의 선택권 보다는 좁은 범위의 선택권이 우선
순위가 높다. 따라서 @Primary 보다 @Qualifier 가 우선권이 높다.

0개의 댓글