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

在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",

...

},

回答:

因为它是一个存储库,而不是严格意义上的a @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 Data Rest时如何从组件扫描中排除@Repository 的全部内容, 来源链接: utcz.com/qa/414259.html

回到顶部