我一直在使用@EnableJpaRepositories
,我对定义特定类而不是包的机会感兴趣。这背后的原因是我正在使用多模块项目,并且目前有一个核心模块,其中包含单独包中的所有存储库定义:
core/repository/ - Here all repository definitions are stored
在其他依赖核心模块的模块中,我使用以下定义来获取存储库:
@EnableJpaRepositories(basePackages ="core.repository")
显然使用这意味着获取core/repository
包下的所有存储库的定义。但是,在某些软件包中,我只需要一些存储库,而不是全部存储库。现在我已经将每个存储库定义移动到一个单独的包中,如:
core/repository/user
但是我很感兴趣 - 是否真的可以定义具体的存储库类,而不是包,类似的东西:
@EnableJpaRepositories(baseClasses ="core.repository.UserRepository")
答案 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