spring-boot - 使用 Spring Data Rest 时如何从组件扫描中排除 @Repository

标签 spring-boot spring-data spring-data-jpa spring-data-rest

在 Spring Boot 项目中,我在从组件扫描中排除某些存储库时遇到问题。

我有一个包含一些实体和一些存储库(JpaRepositories)的库。出于某种原因,我实现了一个小型 Spring Boot Data Rest 应用程序,用于让测试人员快速访问实体。因此,我实现了一个扩展 PagingAndSortingRepository 并用@RepositoryRestResource 注释的存储库。

当应用程序启动时,将扫描所有存储库并使其可用。只要我只想让 Data Rest 存储库可用,我就会对 componenten 扫描器进行注释以排除不需要的存储库。但这不起作用。我检查了执行器 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",
    ...
},

最佳答案

因为它是一个存储库,而不是严格意义上的 @Component ,您需要通过添加 @EnableJpaRepositories 来排除它到您的应用程序:

@SpringBootApplication
@EnableJpaRepositories(excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                DataRepository.class})
})
public class ApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }
}

关于spring-boot - 使用 Spring Data Rest 时如何从组件扫描中排除 @Repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41046736/

相关文章:

spring-boot - 在没有 Spring Boot Application 主类的项目中测试 Spring Data Repository

spring - 当Specification和Pageable一起使用时如何禁用计数?

spring - 为 JpaTransactionManager 启用日志记录

java - 模拟一个 CrudRepository findById ("111".get ()

sql - JPA 中的自定义连接条件

angular - 如何使用spring boot后端使angular app只接收来自局域网的请求?

java - 如何摆脱自动安装新表

java - Cassandra 3.5 与 Spring Data 1.4 的兼容性

elasticsearch - SpringData(4.x)Elastic无法正确序列化实体

java - 客户端的webjars目录几乎是空的