本文从几个spring提供的关键的PostProcessor处理器,来帮助理解spring创建bean的过程:
下面是按方法执行的前后顺序排列
一、容器启动
1.1 BeanDefinitionRegistryPostProcessor
场景:也就是“无中生有”的场景。 只要你想通过编程的方式动态向 Spring 容器里塞 Bean 定义,就用它。
Spring 内部核心:ConfigurationClassPostProcessor 是最重要的 BDRPP。它负责解析 @Configuration 类,扫描 @ComponentScan 指定的包,解析 @Import,把所有扫到的 Bean 都注册进去。
MyBatis 整合:MapperScannerConfigurer。它扫描你的 DAO 接口,利用动态代理生成 BeanDefinition 并注册到 Spring。因为接口是不能实例化的,必须由它手动注册一个 MapperFactoryBean。
Feign Client:扫描 @FeignClient 注解接口并注册代理 Bean。
// BDRPP 继承了 BFPP,所以它有两个方法
public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor

本文深入探讨了Spring容器在bean实例化过程中涉及的几个重要PostProcessor,包括BeanFactoryPostProcessor、BeanPostProcessor的before和after初始化回调,以及@PostConstruct、InitializingBean接口等。这些处理器在不同阶段执行,允许自定义bean的行为,如属性注入、初始化逻辑和依赖管理。

1160

被折叠的 条评论
为什么被折叠?



