【发布时间】:2017-04-24 02:59:21
【问题描述】:
在 Spring Boot 项目中,我无法从组件扫描中排除一些存储库。
我有一个包含一些实体和一些存储库 (JpaRepositories) 的库。出于某种原因,我实现了一个小型 Spring Boot Data Rest 应用程序,该应用程序用于让测试人员快速访问实体。因此,我实现了一个扩展 PagingAndSortingRepository 并使用 @RepositoryRestResource 进行注释的存储库。
当应用程序启动时,所有存储库都将被扫描并可用。只要我只想让 Data Rest 存储库可用,我就对组件扫描器进行了注释以排除不需要的存储库。但这不起作用。我检查了执行器 bean 端点和我所做的任何事情 - 没有排除任何存储库。
为了演示这个问题,我创建了一个简单的演示应用程序:https://github.com/magomi/springboot-restdata-repoloading。
为了排除 DataRepository,我尝试了两种方法:
// exclude V02
@SpringBootApplication
@ComponentScan(excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
DataRepository.class})
})
和
// exclude V01
@SpringBootApplication(exclude = { DataRepository.class })
没有成功。当我调用 /beans 端点(由 spring boot 执行器提供)时,我总是看到
{
bean: "dataRepository",
aliases: [ ],
scope: "singleton",
type: "org.codefromhell.test.repoloading.DataRepository",
...
},
{
bean: "dataApiRepository",
aliases: [ ],
scope: "singleton",
type: "org.codefromhell.test.repoloading.api.DataApiRepository",
...
},
【问题讨论】:
标签: spring-boot spring-data spring-data-jpa spring-data-rest