스프링 빈 2개 이상 등록됨 : expected single matching bean but found 2
안녕하세요 스프링 입문 강의 수강 중 궁금한 점이 있어 질문 남깁니다.
Spring Data Jpa를 적용하면서 스프링이 JpaRepository를 가진 인터페이스의 구현체를 자동으로 생성하고 빈으로 등록한다는 것으로 이해했습니다.
따라서 기존의 Repository 클래스들의 @Repository 어노테이션과 @Service 어노테이션을 삭제 후 Configuration으로 직접 빈을 등록하도록 변경하였습니다.



자동 등록되는 어노테이션을 모두 제거하였고, Config 클래스의 memberRepository 빈 등록 부분도 주석처리 해주었으나 MemberRepositoryImpl이 빈으로 등록되어 다음과 같은 에러가 발생합니다.
MemberRepositoryImpl은 어디에서 빈으로 등록되는 건가요??
답변 1
1
안녕하세요. dasol199님, 공식 서포터즈 OMG입니다.
.
강의에서는 MemberRepositoryImpl을 사용하지 않아 어떤 코드를 작성하셨는지 알 수 없습니다.
MemberRepositoryImpl을 지우고 확인해주세요
.
감사합니다.
0
강의의 MemoryMemberRepository가 MemberRepositoryImpl입니다
클래스를 지우고 문제를 해결할 수 있지만 어느부분에서 빈이 등록되는지 알고싶어 질문드립니다
강의 순서에 따라
MemoryMemberRepository, JdbcMemberRepository, JdbcTemplateMemberRepository, JpaRepository 순으로 구현체를 변경하였고
이때까지는 문제없이 하나의 빈만 등록되어 정상적으로 동작하는 것을 확인하였습니다.
SpringDataJpaMemberRepository를 Config 클래스에서
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}위와 같이 주입해준 결과 MemoryMemberRepository와 JpaRepository가 둘 다 등록되었습니다.
JpaRepository를 가지고 있는 SpringDataJpaMemberRepository가 자동으로 빈에 등록되는 것은 이해했으나
어디서 MemoryMemberRepository가 빈으로 등록되었는지 모르겠습니다
Config 클래스의 위 코드 제외한 Repository 빈 등록 코드와 각 Repository 클래스의 어노테이션도 삭제된 상태입니다.
1
MemoryMemberRepository, MemberRepositoryImpl에 자동 스프링 빈으로 등록하는 어노테이션을 선언하지 않았다면(@Repository, @Component 등)
스프링데이터JPA 진행중 발생한 상황이라면 아래와 같은 상황으로 보입니다.
영한님의 스프링데이터JPA 강의에서 설명해드리는 내용으로
사용자 정의 구현 클래스 규칙에 해당하여 스프링 빈으로 등록된 상황입니다.

JPA강의 -> 본 강의
MemberRepository(I) -> SpringDataJpaMemberRepository(I)
MemberRepositoryCustom(I) -> MemberRepository(I)
자세한 내용은 영한님의 스프링데이터JPA 강의 혹은 "사용자 정의 클래스 impl"로 검색하시면 많은 자료들을 확인하실 수 있으니 참고 부탁드립니다.
..
0
74
2
Unused property.....
0
98
2
project JDK is misconfigured
0
129
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
82
2
단위/통합 테스트 버전충돌 문제
0
91
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
227
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
101
2
윈도우 build test오류 질문
1
102
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
98
2
테스트 실행 시 에러 질문
0
289
1
name을 통한 비교와 객체를 통한 비교
0
77
1
빌드 후 libs 없음
1
128
1
윈도우 gradlew.bat 에러
0
167
1
@PostMapping("/members/new")가 동작하지 않습니다
0
88
1
java static class와 kotlin class
0
77
1
스프링 DB연결
0
126
1
소요 시간
0
85
2
ddl.sql에 빨간 밑줄
1
101
2
welcome page 에러
0
180
3
잘 모르겠습니다.
0
163
2
fail을 똑같이 쳤는데 오류가 발생해요
0
156
2
index.html Welcome page
0
120
1
프로젝트 gradle-groovy ?
0
364
1
테스트코드 메서드명 한글
0
198
2





