在 Spring 中,@ComponentScan 注解用于标注一个注解类,表示要扫描的包和类。在 Spring Boot 中,@ComponentScan 注解通常用于自动配置,它会自动扫描被注解的类所在的包及其子包,并将符合条件的类的实例化并装配到 Spring 容器中。
@ComponentScan 注解需要设置一个或多个扫描路径,用于表示要扫描的包或类。具体来说,@ComponentScan 注解中的 value 属性可以设置多个扫描路径,也可以将这些扫描路径统一存放到一个数组中,例如:
@ComponentScan(value = {"com.example.mypackage"})
public class AppConfig {
// ...
}
在这个例子中,我们指定了 com.example.mypackage 的包及其子包下的所有类都会被扫描到,然后被 Spring 自动实例化并装配到容器中。
@ComponentScan 注解还有一个 basePackages 属性,可以用于指定要扫描的多个包路径:
@ComponentScan(basePackages = {"com.example.package1", "com.example.package2"})
public class AppConfig {
// ...
}
在这个例子中,我们指定了两个包路径 com.example.package1 和 com.example.package2,它们下面的所有类都会被扫描到,并被 Spring 自动实例化并装配到容器中。
需要注意的是,@ComponentScan 注解不仅仅会扫描 @Component 注解标注的类,还会扫描其他几个常用的注解标注的类,包括 @Controller、@Service、@Repository 等,因此需要保证这些注解标注的类在 @ComponentScan 的范围内。