JpaRepositoryFactoryBean과 JpaRepositoryFactory에 의해서 Repository 의 구현체가 결정되는 듯. 현재 기본 구현체는 SimpleJpaRepository 혹은 QueryDslRepository 두개임.
@EnableJpaRepositories(repositoryFactoryBeanClass = 여기서 다른 팩토리Bean 지정)
[Custom]JpaRepositoryFactoryBean
: JpaRepositoryFactoryBean
을 상속하여 구현하고 createRepositoryFactory()
를 오버라이드하여 [Custom]JpaRepositoryFactory
객체를 생성하여 리턴한다.[Custom]JpaRepositoryFactory
: JpaRepositoryFactory
를 상속하여 구현하고,getTargetRepository()
를 오버라이드하여 [Custom]JpaRepositoryImpl
객체를 리턴한다.getRepositoryBaseClass()
메소드를 오버라이드하여 [Custom]JpaRepositoryImpl
객체를 리턴한다.[Custom]JpaRepository
인터페이스 : JpaRepository
와 QueryDslPredicateExecutor
, JpaSpecificationExecutor
를 상속한 인터페이스. 상속 대상 인터페이스는 무엇을 원하느냐에 따라 다르다. Specification이 불필요하다면 JpaSpecificationExecutor
를 상속할 필요가 없는 식.[Custom]JpaRepositoryImpl
: [Custom]JpaRepository
인터페이스를 구현하고 QueryDslJpaRepository
혹은 QueryDSL이 불필요하면 SimpleJpaRepository
를 상속한다.