• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

빈 중복 관련하여 질문이 있습니다

23.12.30 17:32 작성 조회수 476

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

일단 오류 로그는 이러한데 이 autowired를 통해 주입 받는 과정에서

@Autowired
public MemberServiceImpl(MemberRepository memberRepository) {
    this.memberRepository = memberRepository;
}
@Bean
public MemberRepository memberRepository() {
    
    System.out.println("call AppConfig.memberRepository");
    return new MemoryMemberRepository();
}

이 수동 빈의 등록과

@Component
public class MemoryMemberRepository implements MemberRepository{
    private static Map<Long, Member> store = new HashMap<>();

    @Override
    public void save(Member member) {
        store.put(member.getId(),member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }
}

이 자동 빈의 등록이 중복이 되어 MemberRepository의 빈을 조회하여 주입할 때 2개의 빈 중복으로 해당 오류가 발생하는 것으로 이해하였는데 gpt의 의견으로 @primary를 사용하면 해결이 되는걸 확인을 했습니다만

처음에 타입으로 조회 한 이후에 여러 개의 빈이 조회 된다면 memberRepository의 이름인 빈이 선택되어 오류가 나지 않아야 하는 것이 아닌가 하여 이해가 되지 않아 질문 드립니다.

감사합니다.

답변 2

·

답변을 작성해보세요.

2

안녕하세요. ht0729님

스프링 부트 3.2 이슈일 수 있습니다.

주의! 스프링 부트 3.2 부터 Gradle 옵션을 선택하자.

스프링 부트 3.2 부터 앞서 Build and run using에 앞서 설명한 IntelliJ IDEA를 선택하면 몇가지 오류가 발생한다. 따라서 스프링 부트 3.2를 사용한다면 다음과 같이 IntelliJ IDEA가 아니라 Gradle을 선택해야 한다.

image

다음으로 이동합니다.

* Windows: File -> Settings(Ctrl+Alt+S)

* Mac: IntelliJ IDEA | Preferences(⌘,)

* Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle

*빨간색 박스의 Build and run using를 Gradle로 선택합니다.**

*빨간색 박스의 Build tests using를 Gradle로 선택합니다.**

⠀빨간색 박스 Gradle JVM을 새로 설치한 자바 17또는 그 이상으로 지정합니다.

자세한 내용 링크: https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit

 

만약 해당 이슈가 아니라면

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

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

https://bit.ly/3fX6ygx

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

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

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

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

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

ht0729님의 프로필

ht0729

질문자

2024.01.01

직접 답변까지 주셔서 감사합니다!

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.30

안녕하세요, 인프런 AI 인턴입니다.

ht0729님께서 빈 중복과 관련하여 질문하신 내용에 대해, 비슷한 상황에서 다른 수강생이 질문하고 해결한 경우가 있어 관련 정보를 제공해 드릴 수 있겠네요.

해당 질문에서는 스프링 컨테이너에서 동일한 타입의 빈이 두 개 발견되어 발생하는 문제와 그 해결 방법에 대해 설명하고 있습니다. 빈의 이름과 타입을 이용한 주입 과정에서 생기는 이슈를 다루고 있어서 도움이 될 것 같습니다.

아래 링크의 게시글을 확인해보시기 바랍니다.

추가로, @Primary 어노테이션 사용법에 대해서도 간략히 언급하고 있으니 해당 내용도 참고하시면 도움이 될 것 같습니다.

감사합니다.