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

김은채님의 프로필 이미지
김은채

작성한 질문수

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

스프링 데이터 JPA

Spring Data JPA를 통해 Spring Bean이 등록되는 과정

해결된 질문

작성

·

1K

0

 

public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {

Optional<Member> findByName(String name);

}

인터페이스가 JpaRepository를 상속받고 있으면, Spring이 알아서 구현체를 만들어서 Spring Bean으로 등록

(아직 스캔은 하지않아서 등록은 안된 상태)

 

@Configuration
public class SpringConfig {

private final MemberRepository memberRepository;

@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}

}

@Autowired를 보고 Spring이 해당되는  SpringDataJpaMemberRepository로 가서 SpringDataJpaMemberRepository을 통해 만든 구현체를 Spring Bean으로 등록

 

>>이렇게 이해하면 될까요? 검색해보니 Proxy 객체 등 이해하기 어려운 용어들이 나와 질문 드립니다..

 

답변 1

1

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

 

JpaRepository는 SimpleJpaRepository클래스를 구현하는데, 해당 클래스가 스프링 빈으로 등록됩니다.

해당 내용은 영한님의 SpringDataJPA강의에서 영한님이 자세히 설명해주십니다. 


@Autowired가 붙은 곳에 스프링 컨테이너가 같은 타입의 빈을 주입해주도록 동작합니다.

빈으로 등록되는 것은 @Bean이 붙거나, @Configuration, @Component, @Controller,Service,Repository 가 붙어야 빈으로 등록됩니다.

자세한 내용은 스프링 핵심원리 강의를 참고해주세요 :)


감사합니다.

김은채님의 프로필 이미지
김은채
질문자

답변 감사합니다!!

김은채님의 프로필 이미지
김은채

작성한 질문수

질문하기