我看到我们有@org.springframework.context.annotation.ComponentScans
和@org.springframework.context.annotation.ComponentScan
。
@ComponentScans()
?@ComponentScans()
与@ComponentScan({"com.org.abc", "com.org.xyz"})
有何区别答案 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类。