0

正如文档所述, Spring Boot 自动配置应该依赖@Import而不是使用@ComponentScan.

我只是想知道如果他们导入一个带有注释的配置类是否可以@ComponentScan。更具体地说,我们的公共库被分成几个模块,每个模块都提供一些必须自动注册为 bean 的类。为了实现这一点,我们在每个模块的根目录上创建一个配置类,如下所示,扫描其各自的内容:

@ComponentScan
@Configuration
class SomeConfiguration {

}

然后,在一个单独的自动配置模块上,我们创建一个自动配置,以该配置类的存在为条件,如果它存在于类路径中,则导入它。

@ConditionalOnClass(SomeConfiguration.class)
@Import(SomeConfiguration.class)
@Configuration(proxyBeanMethods=false)
class SomeAutoConfiguration {

  @ConditionalOnMissingBean
  @Bean
  SomeComponent someComponentThatCanBeOverridenByApp() {
    return new SomeComponent();
  }

}

到目前为止,我们已经从这些自动配置中提供了几个 bean,带有注释@ConditionalOnMissingBean并且一切似乎都工作正常,但我一直想知道这是否是正确的做法。

我阅读了文档并观看了有关该主题的 Brian Clozel 和 Stéphane Nicoll 视频,但没有人解决这个特别的疑问。

4

0 回答 0