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

조성훈님의 프로필 이미지
조성훈

작성한 질문수

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

스프링 데이터 JPA

SpingConfig가 궁금합니다!

작성

·

454

·

수정됨

0

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

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

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

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

강의 중 SpingConfig 클래스의 작동방식이 궁금해서 질문 올립니다!

  1. @Autowired 아래 생성자에 매개변수에는 bean에 있는 객체이거나 @Service, @Repository 등의 아래의 인스턴스가 들어가는 것 아니었나요?

  2. SpringConfig 생성자의 매개변수에 MemberRepository를 구현한 JpaMemberRepository의 인스턴스가 들어가야하는 것으로 알고있습니다.

    어떠한 구조로 스프링 컨테이너가 JpaMemberRepository의 인스턴스를 넣어서 호출해주는 것인지 궁금합니다!!

+찾아보던 중 스프링 데이터 JPA는 JpaRepository와 같은 인터페이스를 상속받은 인터페이스를 스캔하여 자동으로 빈으로 등록한다는 사실을 확인하였습니다

 

 

 

 

 

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 성훈님

AI 인턴이 적절하게 답변을 해주었는데요.

더 자세한 내용은 스프링 프레임워크 자체를 더 깊이있게 알아야 이해할 수 있습니다.

스프링 프레임워크에 대한 더 자세한 내용은 로드맵의 다음 강의인 스프링 핵심 원리 - 기본편 강의를 참고해주세요.

감사합니다.

 

0

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

조성훈님 질문에 답변 드리겠습니다.

  1. @Autowired는 스프링이 제어의 역전(IoC)을 통하여 해당 타입의 빈을 자동으로 주입하도록 하는 어노테이션입니다. 생성자 주입 방식에서 @Autowired 어노테이션 밑에 오는 생성자의 매개변수는 스프링 컨테이너에 의해 관리되는 빈(bean)이어야 합니다. 따라서 @Service, @Repository 등으로 어노테이션된 클래스의 인스턴스라면 스프링 컨테이너에 등록되어 관리되므로 생성자의 매개변수로 사용될 수 있습니다.

  2. SpringConfig 생성자의 매개변수로 MemberRepository 인터페이스의 구현체가 들어가는 것은 맞습니다. 스프링 컨테이너는 @Configuration 어노테이션이 붙은 SpringConfig 클래스를 설정 정보로 사용하여 빈(bean)을 생성하고, 컴포넌트 스캔을 통해 @Repository, @Service, @Controller 등이 붙은 클래스들을 찾아 빈으로 등록합니다. JpaMemberRepository가 MemberRepository 인터페이스를 구현하고 있고 @Repository 등으로 어노테이션되어 있다면, 스프링 데이터 JPA가 해당 인터페이스 구현체를 자동으로 프록시 객체로 생성하여 빈으로 등록합니다. 그리고 이를 생성자 주입을 통해 SpringConfig에 주입합니다.

  • 맞습니다, 스프링 데이터 JPA는 JpaRepository와 같은 인터페이스를 상속받은 인터페이스에 대해서 구현체 없이도 스프링이 자동으로 구현 객체를 생성하여 빈으로 등록하고 관리합니다. 이 기능을 통해 데이터 접근 계층의 구현을 훨씬 간단하게 할 수 있습니다.

강의 내용과 더 자세한 설정 방법은 제공된 지식공유자 김영한님의 인프런 스프링, JPA 강의 자료에서 “스프링 부트 3.0 > Querydsl 부트 2.x 설정” 부분을 참조하시기 바랍니다.

https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.d186zd5swpfg

도움이 되셨기를 바랍니다. 추가 질문이 있으면 언제든지 문의해주세요.

조성훈님의 프로필 이미지
조성훈

작성한 질문수

질문하기