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

And*_*sky 5 spring spring-data-jpa spring-boot spring-java-config

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

core/repository/ - Here all repository definitions are stored
Run Code Online (Sandbox Code Playgroud)

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

@EnableJpaRepositories(basePackages ="core.repository")
Run Code Online (Sandbox Code Playgroud)

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

core/repository/user
Run Code Online (Sandbox Code Playgroud)

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

@EnableJpaRepositories(baseClasses ="core.repository.UserRepository")
Run Code Online (Sandbox Code Playgroud)

Mac*_*zuk 3

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

\n\n

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

\n\n
@EnableJpaRepositories(basePackages = "core.repository", includeFilters = @ComponentScan.Filter(MyModuleJpaRepo.Class))\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
@MyModuleJpaRepo\npublic interface TestRepository extends JpaRepository<Test, Long> { \xe2\x80\xa6 }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这里您可以找到 spring-data 作者的示例:\n /sf/answers/1592083181/

\n