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

Spring 使用EnableJpaRepositories定义特定的存储库类,spring,spring-boot,spring-data-jpa,spring-java-config,Spring,Spring Boot,Spring Data Jpa,Spring Java Config,我一直在使用@EnableJpaRepositories,我对定义特定类而不是包的机会很感兴趣。这背后的原因是,我使用的是多模块项目,目前有一个核心模块,在一个单独的包中包含所有存储库定义: core/repository/ - Here all repository definitions are stored 在其他依赖于核心模块的模块中,我使用以下定义获取存储库: @EnableJpaRepositories(basePackages ="core.repository") 显然,使用

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

core/repository/ - Here all repository definitions are stored
在其他依赖于核心模块的模块中,我使用以下定义获取存储库:

@EnableJpaRepositories(basePackages ="core.repository")
显然,使用这意味着获取
core/repository
包下所有存储库的定义。然而,在一些软件包中,我只需要一些存储库,而不是全部。目前,我已将每个存储库定义移动到一个单独的包中,如:

core/repository/user
然而我感兴趣的是——是否真的可以定义具体的存储库类,而不是包,比如:

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

您可以使用includeFilters/excludeFilters参数自定义加载的存储库

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

@EnableJpaRepositories(basePackages = "core.repository", includeFilters = @ComponentScan.Filter(MyModuleJpaRepo.Class))
然后用适当的注释标记每个模块存储库:

@MyModuleJpaRepo
public interface TestRepository extends JpaRepository<Test, Long> { … }
@MyModuleJpaRepo
公共接口测试存储库扩展了JpaRepository{…}
在这里,您可以从spring data author中找到示例: