Spring IOC----如何注册bean定义

Posted nijunyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring IOC----如何注册bean定义相关的知识,希望对你有一定的参考价值。

前面说到IOC容器在刷新之前的一些初始化工作,现在来看看在refresh()方法中,是怎样来加载注册我们自己的bean定义的。

refresh()方法中有很多功能,从注释中就可以看出来

技术图片

 

我们本次重点关注invokeBeanFactoryPostProcessors(beanFactory);这个方法

该方法里面可以获取到前面初始化好的注解读取器AnnotatedBeanDefinitionReader,前面在AnnotationConfigUtils#registerAnnotationConfigProcessors方法中是往beanFactory里面注册了配置类的处理器的ConfigurationClassPostProcessor,这个时候就可以拿出来使用了,创建一个配置类解析器对象ConfigurationClassParser,来具体处理几种形式bean注入(@propertySource,@ComponentScan,@Import,@ImportResource,@bean),,最终再由ConfigurationClassBeanDefinitionReader将配置的bean定义加载到容器中ConfigurationClassBeanDefinitionReader#loadBeanDefinitionsForConfigurationClass

流程图如下:

技术图片

 

以上是关于Spring IOC----如何注册bean定义的主要内容,如果未能解决你的问题,请参考以下文章

面试官:Spring是如何把Bean注册到IOC容器中的?

spring在IoC容器中装配Bean详解

Spring学习IOC容器配置bean:定义与实例化

String注解驱动开发如何按照条件向Spring容器中注册bean?这次我懂了!!

spring利用注解来注册bean到容器

Spring框架系列 - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)