해결된 질문
작성
·
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 가 붙어야 빈으로 등록됩니다.
자세한 내용은 스프링 핵심원리 강의를 참고해주세요 :)
감사합니다.
답변 감사합니다!!