老生谈spring(十一):自定义标签之component-scan
1、上一节讲到了spring通过resolve方法解析spring.handlers文件得到context的解析类,现在接着来看resolve方法。反射得到这个handler类以后用BeanUtils创建这个类的实例,调用init方法后放到handlerMappings容器中。
2、以context:component-scan为例,我们知道context的命名空间是由ContextNamespaceHandler来负责处理的,那么我们来看ContextNamespaceHandler的init方法。
3、可以看到ContextNamespaceHandler的init方法又作了一个绑定,以component-scan为例,它绑定的是ComponentScanBeanDefinitionParser这个对象。
4、registerBeanDefinitionParser方法就是把component-scan和ComponentScanBeanDefinitionParser作为key、value存储到parsers容器。这样,自定义标签和相应的handler就绑定好了。