빈 충돌,중복
185
작성한 질문수 11
강의 중에 빈충돌로 인한 코드를 잡는데 주석처리를 해도 잡히지가 않네요
강의에서는 잡혔는데 저는 왜 안잡히고 @Primary,@Qualifier 를 사용하라 하나요?
memoryMemberRepository와 memberRepository라는 두 개의 MemberRepository 빈이 발견되었다는 오류가 뜹니다.
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
오키님의 스프링 애플리케이션에서 빈 충돌 문제가 발생한 것 같습니다. @Primary와 @Qualifier 어노테이션은 스프링이 의존성 주입을 할 때 어떤 빈을 사용해야 하는지 결정하는 데 도움을 주는 어노테이션입니다.
@Primary를 사용하면 스프링은 해당 타입의 빈이 여러 개 있을 경우 @Primary가 붙은 빈을 우선적으로 사용하게 됩니다. 예를 들어, MemberRepository 타입의 빈이 두 개 있고 한 개에 @Primary를 붙였다면, 스프링은 @Primary가 붙은 MemberRepository 빈을 주입합니다.
@Qualifier는 특정 빈을 명시적으로 지정할 때 사용합니다. @Qualifier("빈 이름")과 같이 사용하여 특정 이름을 가진 빈을 주입하도록 할 수 있습니다.
이러한 충돌이 발생하는 경우, 코드 상에서 같은 타입의 빈이 중복으로 생성되지 않도록 주의해야 합니다. @ComponentScan이 스캔하는 범위 내에 서로 다른 설정 클래스나 컴포넌트에서 같은 타입의 빈을 정의하고 있을 수 있습니다. 이 경우, 한쪽의 빈 정의를 제거하거나 이름을 변경하여 충돌을 해결할 수 있습니다.
또한 @ComponentScan이 스캔하지 않도록 해당 클래스나 패키지를 제외하는 방법을 사용할 수도 있습니다. 주석 처리만으로는 충돌이 해결되지 않을 경우 실제 빈 생성 코드가 여전히 남아 있을 수 있기 때문에, @ComponentScan의 excludeFilters 속성을 사용해 강제로 제외하거나, 특정 설정 클래스의 @Configuration 어노테이션을 제거하는 방법이 있습니다.
오키님이 겪고 계신 문제의 동일한 두 개의 MemberRepository 빈 충돌을 해결하기 위해서는 다음과 같은 조치를 취할 수 있습니다:
@Primary어노테이션을 사용해서 주입하려는 주된MemberRepository빈에 명시합니다.
@Qualifier어노테이션을 사용해서 주입 시점에 특정 빈을 명확하게 지정합니다.
@ComponentScan의 범위를 조정하여 충돌이 발생하는 빈이 스캔 대상에서 제외되도록 합니다.
- 중복되는 빈 정의 중 하나를 제거하거나 이름을 변경합니다.
추가적으로, IDE에서 빈을 정의하고 있는 클래스의 코드를 검토하여 충돌 원인을 정확하게 파악하고 그에 맞게 조치를 취하시는 것이 좋습니다.
쿠폰이 안 들어와서 문의 드립니다.
0
62
2
혹시 강의 연장은 따로 불가능 할까요?
0
148
2
다음강의는 뭐에요?
0
95
1
실무에서 주로 사용하는 Compass의 다양한 기능
0
122
1
자동완성기능
0
177
2
로그인 기능 구현 (Application Layer 실습) 에서의 질문
1
165
2
step-in-muti-thread 질문
0
117
1
DatasourceManager와 JpaTransactionManager 혼용
0
564
2
List, Map으로 응답 시의 메시지 컨버터
0
310
1
영한님 로드맵 jpa 강의 질문드립니다
0
442
1
채팅관련 질문입니다
1
416
0
프로젝트에 대해서
0
440
1
안녕하세요 객체오류와 필드 오류에 대해서 질문이 있습니다.
1
437
1
잉 [충고]편, 강의와 다름
0
297
1
스프링입문하는데 좋은 책이있을까요?
0
5001
1
스프링 레거시를 다뤄야 할 일이 생겼는데 영한님 강의중에 해당부분을 다루는 강의가 있을까요?
0
387
1
hibernate:drop table member if exists 오류
0
500
1
강의 노션
0
342
1
소리가 안들려요
1
176
0
스프링 핵심 원리의 개념이 어떻게 녹아 들어간건지 모르겠습니다
0
247
1
학습 커리큘럼 관련 질문
0
257
1
강의와 관련된 내용입니다
1
254
1
부트 로그인 화면
0
346
0
강의가 중간에 짤린 것 같습니다.
0
263
1





