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

sossont님의 프로필 이미지
sossont

작성한 질문수

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

스프링 데이터 JPA

SpringConfig에서 질문있습니다

작성

·

219

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
스프링 데이터 JPA의 동작방식을 SpringDataJpaMemberRepository가 JpaRepository 와 MemberRepository를 상속받고 그중 JpaRepository덕분에 스프링빈으로 자동등록된다고 이해했습니다. 그런데 왜 SpringConfig에서 이를 사용하기위해 아래와같이 memberRepository를 넘겨주는 것인지 이해가 가지 않습니다..ㅠㅠ SpringDataJpaMemberRepository는 어디에 쓰이는 건가요..?
@Bean
public MemberService memberService(){
return new MemberService(memberRepository);
}

답변 2

0

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

답변감사합니다:)

제가 궁금한 것은 그러면 어떻게 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);
}

 

해당 부분은 스프링 핵심 원리 - 기본편 에서 상세히 다루고 있습니다:)

참고해주세요.

 

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

넵 알겠습니다!

0

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

.

SpringConfig의 생성자를 보시면 memberRepository 의존관계를 주입받고 있습니다.

생성자에 @Autowired가 붙어있으므로 MemberRepository 타입으로 받을 수 있는 빈을 찾아서 넘겨주게 됩니다.

SpringDataJpaMemberRepository가 JpaRepository로 인해 빈으로 등록되므로 스프링은 SpringConfig 생성자의 memberRepository에 SpringDataJpaMemberRepository빈을 찾아 주입하게 됩니다.

즉, SpringConfig의 MemberRepository memberRepository 변수가 갖고 있는 것은 SpringDataJpaMemberRepository가 되는 것입니다.

따라서 이미 SpringDataJpaMemberRepository가 쓰이고  있는 겁니다.


.
감사합니다.

sossont님의 프로필 이미지
sossont

작성한 질문수

질문하기