@ComponentScans和@ComponentScan有什么区别?

时间:2018-09-20 09:34:43

标签: java spring

我看到我们有@org.springframework.context.annotation.ComponentScans@org.springframework.context.annotation.ComponentScan

  1. 我们如何使用@ComponentScans()
  2. @ComponentScans()@ComponentScan({"com.org.abc", "com.org.xyz"})有何区别

2 个答案:

答案 0 :(得分:4)

  

Spring可以自动扫描软件包中的bean(如果有)   扫描已启用。

     

@ComponentScan配置要扫描哪些包的类   注释配置。我们可以指定基本包名称   直接使用basePackages或value参数之一(value是一个   basePackages的别名)

@Configuration
@ComponentScan(basePackages = "com.baeldung.annotations")
class VehicleFactoryConfig {}
     

此外,我们可以使用   basePackageClasses参数:

@Configuration
@ComponentScan(basePackageClasses = VehicleFactoryConfig.class)
class VehicleFactoryConfig {}
     

两个参数都是数组,因此我们可以为   每个。

     

如果未指定任何参数,则扫描将从同一位置进行   带有@ComponentScan注释类的软件包。

     

@ComponentScan利用Java 8重复注释功能,   这意味着我们可以用它多次标记一个类:

@Configuration
@ComponentScan(basePackages = "com.baeldung.annotations")
@ComponentScan(basePackageClasses = VehicleFactoryConfig.class)
class VehicleFactoryConfig {}
     

或者,我们可以使用@ComponentScans来指定多个   @ComponentScan个配置:

@Configuration
@ComponentScans({ 
    @ComponentScan(basePackages = "com.baeldung.annotations"), 
    @ComponentScan(basePackageClasses = VehicleFactoryConfig.class)
})
class VehicleFactoryConfig {}

您可以找到更多Spring Bean Annotations

答案 1 :(得分:1)

看看文档:

  

ComponentScans容器注释汇总了多个   ComponentScan注释。

     

ComponentScan配置组件扫描指令以供使用   使用@Configuration类。