작성
·
721
·
수정됨
1
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
UnsatisfiedDependencyException 오류 내용
Error creating bean with name 'memberServiceImpl' defined in file [C:\study\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository
NoUniqueBeanDefinitionException 오류 내용
No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository
오류 2가지가 발생하는데 두가지 모두 스프링 빈에 대한 오류인 것 같은데 해결을 못하겠습니다. (해결은 했으나 질문남깁니다.)
======================================
뒷 부분 강의영상을 참고해서 에러발생하는 지점인 MemoryMemberRepository, Policy 부분에 @Primary
애노테이션을 사용해서 오류를 풀긴했는데 왜 그렇게 해야하는지 모르겠습니다.
스프링 부트 자체에 Componentscan
이 포함되있어서 AppConfig 파일이 스프링 빈에 등록된다는 답변글을 봤었는데 그럼 메인으로 사용하는 클래스(Rate, Fix)가 변경될 때 마다 @Primary
를 적용해줘야하는건가요?
그리고 해결방법 중에 gradle 을 통해서 빌드 실행하는 것이 있던데 설명을 봐도 이해가 안갑니다. 초기에 알려주신 설정으로 gradle 은 intelliJ 로 설정되어있는데 빌드 실행하라는것이 terminal 에서 빌드를 하라고 하시는건지 이해가 안됩니다.
답변 3
0
0
0
저는 MemoryMemberRepository
와 RateDiscountPolicy
클래스에 @Primary
애노테이션을 붙여줘서 오류는 막은 상태입니다.
===================================================
window 시라면 setting 에서 gradle -> 설정 정보(Build and Run, Run tests)가 intelliJ 로 되어있다면 gradle 로 바꿔주시면
@Primary 애노테이션 사용안하셔도 정상적으로 되네요! 제 질문의 아래 질문 보시고 하시면 될 것 같아요 😄
설정을 intelliJ 에서 gradle 로 바꾸라는거죠?