Spring Boot:无需 ComponentScan 的 Bean 配置

问题描述 投票:0回答:1

目前,我正在使用

@ComponentScan
注释设置 bean 配置:

@SpringBootApplication
@ComponentScan
@ComponentScan(basePackages = "net.gencat.transversal.espaidoc.storage.application", includeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = PushDocumentMapper.class),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = PushDocumentInputPort.class),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = PullDocumentInputPort.class),
})
@ComponentScan(basePackages = "net.gencat.transversal.espaidoc.storage.infrastructure", includeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = IdentityContextMapper.class),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = PushDocumentIdentityContextOutputPort.class),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = PullDocumentIdentityContextOutputPort.class)
})
@EnableMongoRepositories(basePackages = "net.gencat.transversal.espaidoc.storage.infrastructure")
@EnableScheduling
public class FrontofficeApplication {
}

我想改变这种方法,以便:

  1. 避免使用太多
    @ComponentScan
    注释。目前,我只设置两个用例。
  2. 避免过多的扫描过程。

您能给我一些使用另一种方法设置 bean 配置的想法吗?

spring-boot
1个回答
0
投票

如果我理解正确的话,您不想进行完整的组件扫描,而只想将少量的类添加到上下文中。为了避免太多细粒度的

@ComponentScan
注释和跨所有类的过度扫描过程,我有 2 个想法:

  1. 使用
    @Import
    将预定义的类列表添加到 Spring 上下文中。这些类可以是
    @Configuration
    类,其本身可以用
    @Import
    进行注释。或者创建自定义元注释,例如
    @ConfigureIdentityContext
    ,其中包含相关注释。无需进行组件扫描。
  2. 如果可能,将相关类移至单独的包中并仅扫描这些包。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.