@ComponentScan 注解类,使得 Spring 去扫描指定包路径下面的类,找到标注有@Component,@Controller,@Service,@Repository 注解的类,将这些类自动加载到 Spring 容器中。
其中,@Controller,@Service,@Repository 注解都标注了@Component 注解,因此本质上,都是根据@Component 注解来判断对象否要加载到容器中。
通常@ComponentScan 注解都是和@Configuration 注解一起使用,一起用来作为 Spring 配置的一部分。
筛选功能
@ComponentScan 中在扫描类的时候,通过对属性 includeFilters 和 excludeFilters 的设置,可以有对于类型有一个筛选功能。includeFilters 指定了哪些类才能被扫描到,excludeFilters 则相反,指定了哪些类得排除扫描。
@Configuration
@ComponentScan(value="com.learn",excludeFilters={@Filter(type=FilterType.ANNOTATION,value=Service.class)})
public class Config {
}
上述代码:
标注有@Service 注解的类,会被排除,不会被加载到 Spring 容器中。includeFilters 也有同样的功能,不再举例。