

java.lang.IllegalStateException: Failed to load ApplicationContext
Parameter 0 of constructor in hello.hellospring.SpringConfig required a single bean, but 2 were found:
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.hellospring.repository.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,springDataJpaMemberRepository
가장 첫번째로 배운 Repository클래스인 memoryMemberRepository클래스의 어노테이션 @Repository를 계속 붙여놓으니까 이것도 컨테이너에 추가된듯..?? 그냥 @Repository 주석처리하니까 됐음..
근데 이전의 JpaRepository나 JdbcRepository클래스 쓸 때는 왜 됐었던건지 모르겠음
아마 springDataJpaMemberRepository가 인터페이스라서 그런 것 같음
-> @Bean에서 이미 Repository 의존성 주입을 해서 어노테이션 @Repository를 무시한 것 같다..
그래서 Repository용 @Bean이 전부 주석 처리 되었을 때
memberRepository를 spring이 알아서 가져오는데
예전 예제의 memoryMemberRepository클래스의 어노테이션 @Repository를 안지워주면
인터페이스 JpaRepository와 같이 처리되는 것 같다.. 하 솔직히 좀 헷갈린다
SpringDataJpaMemberRepository는 강의에서 설명드리는 것 처럼 스프링이 자동으로 스프링 빈으로 등록해줍니다.
코드를 보면 MemberRepository를 Bean으로 등록한 부분은 없습니다.
대신에 MemberRepository를 스프링으로 부터 주입 받아서 사용하는 부분이 있습니다.
동일한 타입의 빈이 중복 등록되어 발생한 문제가 맞습니다.
'Debug' 카테고리의 다른 글


java.lang.IllegalStateException: Failed to load ApplicationContext
Parameter 0 of constructor in hello.hellospring.SpringConfig required a single bean, but 2 were found:
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.hellospring.repository.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,springDataJpaMemberRepository
가장 첫번째로 배운 Repository클래스인 memoryMemberRepository클래스의 어노테이션 @Repository를 계속 붙여놓으니까 이것도 컨테이너에 추가된듯..?? 그냥 @Repository 주석처리하니까 됐음..
근데 이전의 JpaRepository나 JdbcRepository클래스 쓸 때는 왜 됐었던건지 모르겠음
아마 springDataJpaMemberRepository가 인터페이스라서 그런 것 같음
-> @Bean에서 이미 Repository 의존성 주입을 해서 어노테이션 @Repository를 무시한 것 같다..
그래서 Repository용 @Bean이 전부 주석 처리 되었을 때
memberRepository를 spring이 알아서 가져오는데
예전 예제의 memoryMemberRepository클래스의 어노테이션 @Repository를 안지워주면
인터페이스 JpaRepository와 같이 처리되는 것 같다.. 하 솔직히 좀 헷갈린다
SpringDataJpaMemberRepository는 강의에서 설명드리는 것 처럼 스프링이 자동으로 스프링 빈으로 등록해줍니다.
코드를 보면 MemberRepository를 Bean으로 등록한 부분은 없습니다.
대신에 MemberRepository를 스프링으로 부터 주입 받아서 사용하는 부분이 있습니다.
동일한 타입의 빈이 중복 등록되어 발생한 문제가 맞습니다.