使用EnableJpaRepositories定义特定的存储库类

时间:2016-09-23 11:39:58

标签: spring spring-boot spring-data-jpa spring-java-config

我一直在使用@EnableJpaRepositories,我对定义特定类而不是包的机会感兴趣。这背后的原因是我正在使用多模块项目,并且目前有一个核心模块,其中包含单独包中的所有存储库定义:

core/repository/ - Here all repository definitions are stored

在其他依赖核心模块的模块中,我使用以下定义来获取存储库:

@EnableJpaRepositories(basePackages ="core.repository")

显然使用这意味着获取core/repository包下的所有存储库的定义。但是,在某些软件包中,我只需要一些存储库,而不是全部存储库。现在我已经将每个存储库定义移动到一个单独的包中,如:

core/repository/user

但是我很感兴趣 - 是否真的可以定义具体的存储库类,而不是包,类似的东西:

@EnableJpaRepositories(baseClasses ="core.repository.UserRepository")

1 个答案:

答案 0 :(得分:1)

您可以使用includeFilters / excludeFilters param。

自定义加载的存储库

例如,您可以在EnableJpaRepositories配置中定义过滤器:

@EnableJpaRepositories(basePackages = "core.repository", includeFilters = @ComponentScan.Filter(MyModuleJpaRepo.Class))

然后使用适当的注释标记每个模块存储库:

@MyModuleJpaRepo
public interface TestRepository extends JpaRepository<Test, Long> { … }

在这里你可以找到spring-data作者的例子: https://stackoverflow.com/a/22744045/1545775

相关问题