美文网首页
Spring注解注入

Spring注解注入

作者: tracyzht | 来源:发表于2017-06-07 23:40 被阅读0次

对于注解注入的bean,需要在xml中配置

   <context:component-scan base-package="com.XXX"/>
   <context:annotation-config/>

我们看下compoent-scan的注释


image.png

可以看出来component-scan不仅能完成bean定义,还可以自动注入bean,所以只要配置一个即可。
Spring在DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions中解析bean时,对于注解注入的bean采用parseCustomElement方式解析。


image.png
委托给BeanDefinitionParserDelegate来解析。
image.png

NamespaceHandler通过子类NamespaceHandlerSupport完成解析。


image.png
不同的标签由不同的BeanDefinitionParser来解析。对于component-scan来说,是由ComponentScanBeanDefinitionParser执行。
image.png
(1)首先获取context:component-scan 配置的属性base-package的值,然后放到数组。
(2)创建扫描对应包下的class和jar文件的对象ClassPathBeanDefinitionScanner ,由这个类来实现扫描包下的class和jar文件并把注解的Bean包装成BeanDefinition。
(3)BeanDefinition注册到Bean工厂。
以下为具体解析和注册过程:
image.png

1、首先找到待注入的bean

image.png

(1)先把base-package下的路径进行转换,并扫描package下的jar和class并封装成resource
(2)过滤<context:exclude-filter>包下的class
(3)包装beanDefinition,放到队列里

2、把beanDefinition包装成BeanDefinitionHolder

3、注册bean,由DefalutListableBeanDefnitionRegistry来完成

image.png

相关文章

网友评论

      本文标题:Spring注解注入

      本文链接:https://www.haomeiwen.com/subject/nkxofxtx.html