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

jh06_04jh님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 데이터 JPA

MemberServiceIntegrationTest 오류

작성

·

458

0

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

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

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

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

 

안녕하세요. MemberServiceIntegrationTest의 회원가입 테스를 진행 중에 오류가 발생하여 질문을 남깁니다..
제가 알아본걸로는 빈 자동 주입이 2개이상여서 안되는것 같아서 어노테이션들도 확인해봤는데 없었고 다른 이유들도 많이 봤지만 오류를 찾을 수 없어 질문 남깁니다....

 

 

[에러 코드]

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'springConfig' defined in file [/Users/hyrki/Desktop/study/hello/build/classes/java/main/hellospring/hello/SpringConfig.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springDataJpaMemberRepository' defined in hellospring.hello.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.Optional hellospring.hello.repository.MemberRepository.findfById(java.lang.Long); Reason: Failed to create query for method public abstract java.util.Optional hellospring.hello.repository.MemberRepository.findfById(java.lang.Long)! No property 'findfById' found for type 'Member'; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional hellospring.hello.repository.MemberRepository.findfById(java.lang.Long)! No property 'findfById' found for type 'Member'

 

 

ㅠㅠㅠㅠㅠㅠㅠㅠ부탁 드리겠습니다.....

 

 

 

답변 2

0

안녕하세요. jh06_04jh님, 공식 서포터즈 OMG입니다.

findfById라는 이름의 메서드를 findById로 모두 변경해주세요 😀

SpringDataJPA에서는 메서드의 이름 규칙으로 구현코드를 자동으로 생성해줍니다 ^^

이름 규칙이 틀려서 발생하는 상황이네요!

감사합니다.


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

감사합니다......ㅠㅠㅠㅠㅠ
죄송하지만 질문한가지만 더 해도 괜찮을까요?
findById는 MemberRepository의 메서드인데 SpringDataJpaMemberRepository에서 왜 영향을 받는건가요??

SpringDataJpaMemerRepository를 제외한 다른 Repository 구현체들은 직접

return new xxRepiository().. 와 같이 직접 스프링이 관리하는 빈으로 등록해주었는데요,


image

반면 SpringDataJpaMemerRepository의 경우 MemberRepository 클래스의 구현체로 직접 등록하지 않고 SpringConfig의 생성자로 주입을 받도록 구현하였습니다.

 

이렇게 다르게 구현한 이유는 SpringDataJpaMemerRepository는 JpaRepository 인터페이스를 상속할 했기 때문인데요.

JpaRepository의 경우 이미 스프링이 관리하는 빈으로 등록되어 있기 때문입니다.

 

본 강의의 목표는 상세한 개념보다는 스프링 로드맵의 청사진을 보여주기 위한 강의로 이러한 세세한 내용까지는 담지 못하여 이해하시기에 어려울 수 있겠지만,

 

영한님의 스프링&JPA로드맵을 수강하시게 되면 아시게 될 내용이라 지금 당장 이해하지 못하더라도 나중에 학습하고 다시 보시면 제 답변이 말하는 내용이 무엇인지 아시게 될거라 생각합니다 😀

0

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

수강생님께서 겪고 계신 UnsatisfiedDependencyException 오류는 스프링 빈의 의존성 문제와 관련이 있는 것으로 보입니다. 특히, MemberRepository 인터페이스의 메서드 이름 오류로 인해 발생하는 경우가 있습니다. findfById 대신 findById로 메서드 이름을 수정하면 문제를 해결할 수 있습니다.

이와 유사한 질문과 답변이 있어 해당 링크를 공유드립니다.

추가적으로 해당 오류에 대한 자세한 해결 방법을 담고 있는 답변을 확인하시려면 위 링크들을 방문해 보시기 바랍니다.