작성
·
454
·
수정됨
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
강의 중 SpingConfig 클래스의 작동방식이 궁금해서 질문 올립니다!
@Autowired 아래 생성자에 매개변수에는 bean에 있는 객체이거나 @Service
, @Repository
등의 아래의 인스턴스가 들어가는 것 아니었나요?
SpringConfig 생성자의 매개변수에 MemberRepository를 구현한 JpaMemberRepository의 인스턴스가 들어가야하는 것으로 알고있습니다.
어떠한 구조로 스프링 컨테이너가 JpaMemberRepository의 인스턴스를 넣어서 호출해주는 것인지 궁금합니다!!
+찾아보던 중 스프링 데이터 JPA는 JpaRepository
와 같은 인터페이스를 상속받은 인터페이스를 스캔하여 자동으로 빈으로 등록한다는 사실을 확인하였습니다
답변 2
0
안녕하세요. 성훈님
AI 인턴이 적절하게 답변을 해주었는데요.
더 자세한 내용은 스프링 프레임워크 자체를 더 깊이있게 알아야 이해할 수 있습니다.
스프링 프레임워크에 대한 더 자세한 내용은 로드맵의 다음 강의인 스프링 핵심 원리 - 기본편 강의를 참고해주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
조성훈님 질문에 답변 드리겠습니다.
@Autowired는 스프링이 제어의 역전(IoC)을 통하여 해당 타입의 빈을 자동으로 주입하도록 하는 어노테이션입니다. 생성자 주입 방식에서 @Autowired 어노테이션 밑에 오는 생성자의 매개변수는 스프링 컨테이너에 의해 관리되는 빈(bean)이어야 합니다. 따라서 @Service
, @Repository
등으로 어노테이션된 클래스의 인스턴스라면 스프링 컨테이너에 등록되어 관리되므로 생성자의 매개변수로 사용될 수 있습니다.
SpringConfig 생성자의 매개변수로 MemberRepository 인터페이스의 구현체가 들어가는 것은 맞습니다. 스프링 컨테이너는 @Configuration 어노테이션이 붙은 SpringConfig 클래스를 설정 정보로 사용하여 빈(bean)을 생성하고, 컴포넌트 스캔을 통해 @Repository, @Service, @Controller 등이 붙은 클래스들을 찾아 빈으로 등록합니다. JpaMemberRepository가 MemberRepository 인터페이스를 구현하고 있고 @Repository 등으로 어노테이션되어 있다면, 스프링 데이터 JPA가 해당 인터페이스 구현체를 자동으로 프록시 객체로 생성하여 빈으로 등록합니다. 그리고 이를 생성자 주입을 통해 SpringConfig에 주입합니다.
강의 내용과 더 자세한 설정 방법은 제공된 지식공유자 김영한님의 인프런 스프링, JPA 강의 자료에서 “스프링 부트 3.0 > Querydsl 부트 2.x 설정” 부분을 참조하시기 바랍니다.
도움이 되셨기를 바랍니다. 추가 질문이 있으면 언제든지 문의해주세요.