인프런 커뮤니티 질문&답변

ljjs0121님의 프로필 이미지
ljjs0121

작성한 질문수

스프링 핵심 원리 - 기본편

옵션 처리

UnsatisfiedDependencyException 오류에 대한 질문

작성

·

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가지가 발생하는데 두가지 모두 스프링 빈에 대한 오류인 것 같은데 해결을 못하겠습니다. (해결은 했으나 질문남깁니다.)

======================================

  1. 뒷 부분 강의영상을 참고해서 에러발생하는 지점인 MemoryMemberRepository, Policy 부분에 @Primary 애노테이션을 사용해서 오류를 풀긴했는데 왜 그렇게 해야하는지 모르겠습니다.


    스프링 부트 자체에 Componentscan이 포함되있어서 AppConfig 파일이 스프링 빈에 등록된다는 답변글을 봤었는데 그럼 메인으로 사용하는 클래스(Rate, Fix)가 변경될 때 마다 @Primary를 적용해줘야하는건가요?

  2. 그리고 해결방법 중에 gradle 을 통해서 빌드 실행하는 것이 있던데 설명을 봐도 이해가 안갑니다. 초기에 알려주신 설정으로 gradle 은 intelliJ 로 설정되어있는데 빌드 실행하라는것이 terminal 에서 빌드를 하라고 하시는건지 이해가 안됩니다.

답변 3

0

바로 밑에 질문에 답변 있습니다. 스프링 부트 3.2부터는 build & run이랑 run test를 gradle로 하라고 하시네요

ljjs0121님의 프로필 이미지
ljjs0121
질문자

설정을 intelliJ 에서 gradle 로 바꾸라는거죠?

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. ljjs0121님, 이지현님

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

문제를 해결하기 전에 문제가 발생하는 상황으로 코드를 올려주세요.

 

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

ljjs0121님의 프로필 이미지
ljjs0121
질문자

Gradle 설정 정보에서 IntelliJ 에서 Gradle 로 바꿨더니 @Primary를 쓰지 않고도 오류가 해결되었습니다. 감사합니다.

김영한님의 프로필 이미지
김영한
지식공유자

네 역시 스프링 3.2 관련 이슈였군요 🙂 감사합니다.

0

저도 똑같은 오류인데 어떻게 해결하셨는지 알려주실 수 있을까요..?

ljjs0121님의 프로필 이미지
ljjs0121
질문자

저는 MemoryMemberRepositoryRateDiscountPolicy 클래스에 @Primary 애노테이션을 붙여줘서 오류는 막은 상태입니다.

===================================================
window 시라면 setting 에서 gradle -> 설정 정보(Build and Run, Run tests)가 intelliJ 로 되어있다면 gradle 로 바꿔주시면
@Primary 애노테이션 사용안하셔도 정상적으로 되네요! 제 질문의 아래 질문 보시고 하시면 될 것 같아요 😄

ljjs0121님의 프로필 이미지
ljjs0121

작성한 질문수

질문하기