mag*_*omi 6 spring-data spring-data-jpa spring-data-rest spring-boot
在Spring启动项目中,我有问题从组件扫描中排除一些存储库.
我有一个包含一些实体和一些存储库(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})
})
Run Code Online (Sandbox Code Playgroud)
和
// exclude V01
@SpringBootApplication(exclude = { DataRepository.class })
Run Code Online (Sandbox Code Playgroud)
没有成功.当我调用/ beans端点(由弹簧启动器执行器提供)时,我总是看到
{
bean: "dataRepository",
aliases: [ ],
scope: "singleton",
type: "org.codefromhell.test.repoloading.DataRepository",
...
},
{
bean: "dataApiRepository",
aliases: [ ],
scope: "singleton",
type: "org.codefromhell.test.repoloading.api.DataApiRepository",
...
},
Run Code Online (Sandbox Code Playgroud)
Str*_*lok 11
因为它是一个存储库而不是严格的存储库,所以@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);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以在存储库界面上使用org.springframework.data.repository.NoRepositoryBean批注。从文档:
注释,用于排除存储库接口,从而导致创建实例。当为所有存储库提供扩展的基础接口,并结合自定义存储库基类以实现在该中间接口中声明的方法时,通常会使用此方法。在这种情况下,您通常会从中间接口派生出具体的存储库接口,但又不想为中间接口创建Spring bean。
归档时间: |
|
查看次数: |
4619 次 |
最近记录: |