BeanFactoryPostProcessor-spring源码详解(三)
上篇文章说了
前面说过这里会注册很多用于解析注解的bean定义,比如springEvent时间,比如@autowired处理器等,其中就包含
ConfigurationClassPostProcessor,这个解析的就是@Component,@import等。
当调用下面reader.register(componentClasses)的时候就会把我们的 配置类 注册到
BeanDefinitionMap里面。
(现在配置类有了,bean定义也有了,这时候是不是要开始解析)
那么解析就是在上面第三张图invokeBeanFactoryPostProcessors(beanFactory)
这里面就有我们前面说的两个
beanFactoryPostProcessors 修改bean定义
beanFactoryPostProcessorsRegistry注册bean定义
beanDifinitionRegistryPostProcessor
先调用实现PriorityOrdered接口的,后面调用实现Ordered接口的,最后调用未实现接口的。
前面已经注册了的会通过判断是否存在排除,并且注册的会全部放入registryProcessors
前面调用的都是实现beanDifinitionRegistryPostProcessor
最后调用的是实现beanDifinitionRegistryProcessor
也就是那句invokeBeanFactoryPostProcessors
这里对我们的配置类(@configuration)做了cglib动态代理,为什么要对配置类做cglib代理,这样的好处就是,保证在配置类里调用,也是从容器中获取bean。
(注意,必须写了@configuration才会有cglib代理,实现面向对象编程,从容器获取)
那么为什么@Configuration标识的就会代理呢?
因为在bean工厂 注册的时候,会对@configuration注解的配置类,加上full标识,如图。
相关文章
- 【01】Spring源码-手写篇-手写IoC实现
- spring boot自动配置原理面试题_Spring boot面试
- Spring读源码系列番外篇09--BeanWrapper的应用
- Spring Cloud Config
- 【05】Spring源码-手写篇-手写Bean配置
- 解释spring框架中bean的生命周期_Spring bean的生命周期
- Spring Boot源码学习:自动配置与自定义注解详解
- spring官方文档 中文_Spring软件
- mybatis3源码解析--spring下mapper注册详解
- mybatis-spring源码解析--mapper注册详解
- mybatis-spring源码解析--事务详解
- Spring循环依赖-spring源码详解(四)
- 【Spring源码】- 03 Spring IoC容器启动之Bean创建流程
- Nacos 2.0的Spring Boot Starter来了!
- Spring Cloud Gateway 的监控(一)
- Spring IOC/BeanFactory/ApplicationContext的工作流程/实现原理/初始化/依赖注入源码详解编程语言
- Spring Boot 2.x 启动全过程源码分析(上)入口类剖析详解编程语言
- Spring Boot(五):spring data jpa的使用详解编程语言
- Spring框架致力于搭建基于MSSQL的稳健开发体系(spring mssql)