작성
·
571
0
build.gradle에 웹 라이브러리 추가하고
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'jakarta.inject:jakarta.inject-api:2.0.1'
//web 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-web'
CoreApplicaton을 돌렸더니, 아래와 같은 오류 메세지가 뜹니다. 대충 어떤 오류인지는 알겠는데.....어떻게 찾아서 고쳐야 할지는 모르겠네요?
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found:
- memoryMemberRepository: defined in file [C:\SpringBoot\core\out\production\classes\hello\core\member\MemoryMemberRepository.class]
- memberRepository: defined by method 'memberRepository' in class path resource [hello/core/AppConfig.class]
This may be due to missing parameter name information
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
Ensure that your compiler is configured to use the '-parameters' flag.
You may need to update both your build tool settings as well as your IDE.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
jfk6725님, 질문하신 내용과 관련하여 hello.core.member.MemberServiceImpl
의 생성자가 단일 빈을 요구하는데, 두 개의 빈(memoryMemberRepository
와 memberRepository
)이 발견되었다는 오류에 대해 설명드리겠습니다. 이는 Spring에서 동일한 타입의 빈이 두 개 이상 존재하여 자동 주입(Autowired) 시, 어떤 빈을 주입해야 할지 모르는 상황을 의미합니다.
해결 방법으로는:
1. 하나의 빈에 @Primary
를 붙여 기본 빈으로 지정합니다.
2. @Qualifier
어노테이션을 사용하여 주입받을 빈을 명시적으로 지정합니다.
3. 빈 이름을 지정하여 직접 주입받습니다.
이와 관련하여 유사한 문제를 해결한 예시는 다음 링크에서 확인할 수 있습니다:
- NoUniqueBeanDefinitionException 에러 질문입니다.
- 오류 관련해서 질문드립니다.
위 링크에는 NoUniqueBeanDefinitionException
으로 인해 동일한 타입의 빈이 두 개 이상 발견되어 발생하는 문제와 그 해결 방안에 대해 구체적으로 설명되어 있습니다. 각 링크를 클릭하여 자세한 해결 방법을 확인해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.