【问题标题】:Spring Boot REST · Can't exclude a repository without excluding a controllerSpring Boot REST · 不能在不排除控制器的情况下排除存储库
【发布时间】:2018-04-03 17:28:21
【问题描述】:

我想从组件扫描中排除存储库。但是,我尝试过的四件事也排除了我不想要的控制器。这是我所拥有的:

Application.java

@SpringBootApplication
@ComponentScan("com.project")
@EntityScan(basePackages = { "com.project.model" })
@EnableJpaRepositories("com.project.repository")
public class Application extends RepositoryRestConfigurerAdapter implements WebMvcConfigurer {
    ...
}

SaleItemController.java

@RepositoryRestController
public class SaleItemController {
    ...
}

SaleItemRepository.java

@RepositoryRestResource(collectionResourceRel = "saleItem", path = "saleItems", excerptProjection = SaleItemProjection.class)
public interface SaleItemRepository extends PagingAndSortingRepository<SaleItem, Long>, JpaSpecificationExecutor<SaleItem> {}

第一次尝试:过滤Application

@SpringBootApplication
@ComponentScan("com.project")
@EntityScan(basePackages = { "com.project.model" })
@EnableJpaRepositories(basePackages = { "com.project.repository" }, excludeFilters={@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=SaleItemRepository.class)})
public class Application extends RepositoryRestConfigurerAdapter implements WebMvcConfigurer {
    ...
}

第二次尝试:SaleItemRepository 上的条件元素:

@RepositoryRestResource(collectionResourceRel = "saleItem", path = "saleItems", excerptProjection = SaleItemProjection.class)
@ConditionalOnExpression("false")
public interface SaleItemRepository extends PagingAndSortingRepository<SaleItem, Long>, JpaSpecificationExecutor<SaleItem> {}

第三次尝试:

@RepositoryRestResource(collectionResourceRel = "SaleItem", path = "saleItems", excerptProjection = SaleItemProjection.class)
@NoRepositoryBean
public interface SaleItemRepository extends PagingAndSortingRepository<SaleItem, Long>, JpaSpecificationExecutor<SaleItem> {}

第四次尝试:读取包含过滤器优先于排除过滤器的地方:

@SpringBootApplication
@ComponentScan(basePackages = "com.project", includeFilters={@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=SaleItemController.class)})
@EntityScan(basePackages = { "com.project.model" })
@EnableJpaRepositories(basePackages = { "com.project.repository" }, excludeFilters={@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=SaleItemRepository.class)})
public class Application extends RepositoryRestConfigurerAdapter implements WebMvcConfigurer {
    ...
}

(将includeFiltersexcludeFilters 放在一起会引发异常,因为它找不到另一个存储库)

所有尝试都成功排除了存储库,但也排除了我不想要的控制器。我知道存储库已被排除,因为某些东西在被排除时不会中断,并且我知道控制器已被排除,因为其中映射的端点停止工作。

如何仅排除存储库?

提前致谢。

【问题讨论】:

    标签: java postgresql hibernate spring-boot spring-data-jpa


    【解决方案1】:

    我终于找到了。它似乎与exported = falseSaleItemRepository@RepositoryRestResource 上合作。另外,我删除了excerptProjection = SaleItemProjection.class

    现在我还有其他事情要解决...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2020-01-21
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      相关资源
      最近更新 更多