老生谈spring(十二):ClassPathBeanDefinitionScanner的filter设置
1、创建扫描器时如果没配置则使用默认的过滤器对扫描的类进行过滤
2、createScanner值做了一件事就是new一个ClassPathBeanDefinitionScanner扫描器。
3、ClassPathBeanDefinitionScanner的构造方法判断是否使用默认的过滤器,useDefaultFilters默认是true的。
4、默认的过滤器中首先会有一个include过滤器去过滤含有Component注解的类,这些类才会被解析为BeanDefinition注册到容器上。
5、除了默认的过滤器以外,还可以parseTypeFilters注册我们自定义过滤规则的过滤器。
6、在xml中增加过滤器配置:
<context:component-scan base-package="com.sise.course1" >
<!--include过滤器-->
<context:include-filter type="" expression=""/>
<!--exclude过滤器-->
<context:exclude-filter type="" expression=""/>
</context:component-scan>
7、parseTypeFilters就解析context:component-scan标签下的context:include-filter和context:exclude-filter标签,然后创建这两个标签中指定的过滤器并分别进行注册。
8、结语:本节展示了扫描器的过滤器是如何注册的,看懂了这节的内容就知道了为什么我们启用了注解spring就能创建Component注解类的备案。