작성
·
219
0
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}
답변 2
0
답변감사합니다:)
제가 궁금한 것은 그러면 어떻게 memberRepository가 들어갈 곳에 SpringDataJpaMemberRepository을 알아서 찾아 넣어주는 것인지입니다.
아래 코드에서는 SpringDataJpaMemberRepository가 extends뒤에 두개를 상속받았는데 답변달아주신것에서 memberRepository를 넘겨줬을때 어떻게 스프링컨테이너는 SpringDataJpaMemberRepository빈을 찾는 행위를 하는 것인지 궁금합니다.
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
// select m from Member m where m.name = ?
@Override
Optional<Member> findByName(String name);
}
0
안녕하세요. sossont님, 공식 서포터즈 David입니다.
.
SpringConfig의 생성자를 보시면 memberRepository 의존관계를 주입받고 있습니다.
생성자에 @Autowired가 붙어있으므로 MemberRepository 타입으로 받을 수 있는 빈을 찾아서 넘겨주게 됩니다.
SpringDataJpaMemberRepository가 JpaRepository로 인해 빈으로 등록되므로 스프링은 SpringConfig 생성자의 memberRepository에 SpringDataJpaMemberRepository빈을 찾아 주입하게 됩니다.
즉, SpringConfig의 MemberRepository memberRepository 변수가 갖고 있는 것은 SpringDataJpaMemberRepository가 되는 것입니다.
따라서 이미 SpringDataJpaMemberRepository가 쓰이고 있는 겁니다.
.
감사합니다.
해당 부분은 스프링 핵심 원리 - 기본편 에서 상세히 다루고 있습니다:)
참고해주세요.