BeanFactoryPostProcessor-spring源码详解(三)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: BeanFactoryPostProcessor-spring源码详解(三)

image.png
image.png
image.png
前面说过这里会注册很多用于解析注解的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标识,如图。

相关文章
|
21天前
|
缓存 Java 开发工具
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
三级缓存是Spring框架里,一个经典的技术点,它很好地解决了循环依赖的问题,也是很多面试中会被问到的问题,本文从源码入手,详细剖析Spring三级缓存的来龙去脉。
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
|
21天前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
|
21天前
|
XML 缓存 Java
手写Spring源码(简化版)
Spring包下的类、手写@ComponentScan注解、@Component注解、@Autowired注解、@Scope注解、手写BeanDefinition、BeanNameAware、InitializingBean、BeanPostProcessor 、手写AnnotationConfigApplicationContext
手写Spring源码(简化版)
|
4月前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
79 3
|
5天前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
15 4
|
11天前
|
XML 缓存 Java
spring源码剖析-spring-beans(内部核心组件,BeanDefinition的注册,BeanWapper创建)
spring源码剖析-spring-beans(内部核心组件,BeanDefinition的注册,BeanWapper创建)
39 10
|
11天前
|
XML 存储 Java
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
|
4月前
|
存储 Java 程序员
Spring 注册BeanPostProcessor 源码阅读
Spring 注册BeanPostProcessor 源码阅读
|
10天前
|
XML 存储 Java
Spring-源码深入分析(二)
Spring-源码深入分析(二)
|
10天前
|
XML 设计模式 Java
Spring-源码深入分析(一)
Spring-源码深入分析(一)
下一篇
无影云桌面