Contents

@EnableJpaRepositories 속성에 대해

스프링 프로젝트 내부에서 다양한 레포지토리로 다양한 데이터 소스를 접근하기 위해서는 그에 알맞는 설정이 꼭 필요하다.

오늘은 @EnableJpaRepository의 속성인 basePackagesrepositoryBaseClass에 대해 알아봤다.

https://stackoverflow.com/questions/45663025/spring-data-jpa-multiple-enablejparepositories

basePackage

@EnableJpaRepositories 어노테이션은 스프링에게 어떤 DataSource가 어떤 Repository를 통해 다뤄져야 하는지를 알게 한다.

이 때 basePackage 속성은 스프링에게 스캔할 패키지 범위를 지정하게 해준다.

멀티 레포지토리 모듈을 가지는 프로젝트의 경우, 서로 다른 패키지에 속해 있는 레포지토리를 의존해야 하는 상황이 생긴다.

이럴 때 서로 다른 레포지토리 간 설정에 있어 혼동을 막기 위해 basePackage 속성을 사용한다.

repositoryBaseClass

그럼 repositoryBaseClass 속성은 왜 사용할까?

repositoryBaseClass 속성 설명을 읽어보면

Configure the repository base class to be used to create repository proxies for this particular configuration.

라고 되어 있다.

repositoryBaseClass 속성은 스프링에게 마찬가지로 레포지토리 구현체를 생성할 때 기본 구현체를 생성하지 말고 우리가 만든 이 기본 클래스를 사용해라~ 라고 알려주는 것이다.

정리

  • @EnableJpaRepositories 어노테이션은 스프링에게 Datasource - Repository 매핑을 알려준다.
  • basePackage 속성은 스프링이 스캔할 패키지 범위를 지정해준다.
  • repositoryBaseClass 속성은 스프링이 기본 구현체 대신 사용할 레포지토리 구현체를 지정한다.