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

G General님의 프로필 이미지
G General

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

스프링 데이터 JPA 적용2

SpringDataJpaItemRepository 질문 드립니다

작성

·

465

-1

의존성 주입 최상단에 있는 SpringDataJpaConfig  파일에서 주입받는 SpringDataJpaItemRepository는 어디서 받는 것인지 모르겠습니다.

스캔 베이스 패키지를 web으로 한정지었기 때문에 SpringDataJpaItemRepository 인터페이스에 @Repository를 달아봤자 어차피 스캔도 안 되고, Config 파일에서도 단순히 주입받아서 사용해서... 어디서 주입되는지 잘 몰라서 아래처럼 생성자에서 로그를 찍어봤습니다.

private final SpringDataJpaItemRepository repository;
public SpringDataJpaConfig(SpringDataJpaItemRepository repository) {
this.repository = repository;
System.out.println(repository.getClass());
}

class jdk.proxy2.$Proxy95

이게 스프링 데이터jpa의 부가기능으로 스프링이 jdk 인터페이스 프록시 객체로 만들어주는 것으로 보이는데요.

질문 1.

SpringDataJpaItemRepository가 JpaRepository<T, ID>를 상속받는데, 개인적인 생각으로는 의존성 주입 과정에서 JpaRepository<T, ID> 인터페이스를 상속받는 타입을 감지하는 순간(스프링 기초 수업을 안 들어서 정확히 어느 과정인지는 잘 모르겠습니다ㅠ) 해당 타입으로 빈을 만들어버리는 것 같은데 대략적인 과정이 이게 맞는지 궁금합니다.

 

질문 2.

위 과정이 맞다면, JpaItemRepositoryV2 같은 중간 계층 클래스를 두지 않고 직접적으로 SpringDataJpaItemRepository를 레포지토리로 사용하려고 할 때는, @Repository 를 붙이지 않아도 서비스 계층에서 직접 주입받아서 사용하는 것도 가능한가요? 직접 돌려보려고 했는데 이거는 하면 코드 구조를 서비스, 레포지토리 전부 갈아치워야 할 것 같아서... 일단 질문 올린 김에 같이 질문드립니다

답변 1

2

G General님의 프로필 이미지
G General
질문자

아 뒤에 '실용적인 구조' 편에서 설명이 나와서 해결됐습니다!

G General님의 프로필 이미지
G General

작성한 질문수

질문하기