• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

UnsatisfiedDependencyException 오류에 대한 질문

24.01.25 14:19 작성 24.01.25 15:52 수정 조회수 476

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

kko님의 프로필

kko

2024.01.26

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

ljjs0121님의 프로필

ljjs0121

질문자

2024.01.28

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

0

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

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

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

 

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

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

https://bit.ly/3fX6ygx

 

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

 

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

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

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

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

ljjs0121님의 프로필

ljjs0121

질문자

2024.01.28

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

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

0

이지현님의 프로필

이지현

2024.01.25

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

ljjs0121님의 프로필

ljjs0121

질문자

2024.01.28

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

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