Spring原理分析-Bean生命周期
一、Bean生命周期
1、Bean生命周期测试
2、生命周期顺序
- 二、自定义BeanPostProcessor实现增强
- 三、模板方法-设计模式
一、Bean生命周期
1、Bean生命周期测试
- ① 编写LifeCycleBean类
- ② 编写启动类
- ③ 测试
2、生命周期顺序
执行顺序:构造方法 → @Autowired → @PostConstruct → @PreDestroy
二、自定义BeanPostProcessor实现增强
- ① 实现InstantiationAwareBeanPostProcessor与DestructionAwareBeanPostProcessor接口
Ⅰ postProcessBeforeDestruction:销毁前执行,如@PreDestroy;
Ⅱ postProcessBeforeInstantiation:实例化前执行,返回的对象会替换原本的bean;
Ⅲ postProcessAfterInstantiation:实例化后执行,返回的对象会替换原本的bean;
Ⅳ postProcessProperties:依赖注入阶段执行,如@Autowired、@Value、@Resource;
Ⅴ postProcessBeforeInitialization:初始化前执行,返回的对象会替换原本的bean,如@PostConstruct、@ConfigurationProperties;
Ⅵ postProcessAfterInitialization:初始化后执行,,返回的对象会替换原本的bean,如代理增强。
- ② 测试
三、模板方法-设计模式
- ① 编写测试类
- ② 编写后置处理器接口
- ③ 修改MyBeanFactory类
添加如下属性,及方法:
此时,由于模板方法还没有实现,所以直接测试并没有变化。
- ④ 修改测试类main方法
通过匿名内部类形式实现接口中的方法,如下:
四、结尾
以上即为Spring原理分析-容器&Bean(二)的全部内容
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
接下来讲解:
Spring原理分析-Bean后处理器
-
一、Bean后处理器
1、基础准备
2、AutowiredAnnotationBeanPostProcessor后处理器
3、CommonAnnotationBeanPostProcessor后处理器
4、ConfigurationPropertiesBindingPostProcessor后处理器
5、总结
-
二、深入AutowiredAnnotationBeanPostProcessor后处理器
1、基础准备
2、postProcessProperties方法
3、按类型查找值
4、按方法参数类型查找值
一、Bean后处理器
1、基础准备
- ① 编写实体类
- ② 编写测试类
- ③ 测试
@Autowired、@Resource、@PostConstruct、@PreDestroy均为生效。
2、AutowiredAnnotationBeanPostProcessor后处理器
解析:@Autowired、@Value 注解,如下配置:
3、CommonAnnotationBeanPostProcessor后处理器
解析:@Resource、@PostConstruct、@PreDestroy 注解,如下配置:
由此也可以看出,先解析 @Resource,后解析 @Autowired 注解。
4、ConfigurationPropertiesBindingPostProcessor后处理器
解析:@ConfigurationProperties 注解,如下配置:
5、总结
- ① AutowiredAnnotationBeanPostProcessor后处理器
解析@Autowired、@Value 注解;
- ② CommonAnnotationBeanPostProcessor后处理器
解析@Resource、@PostConstruct、@PreDestroy 注解;
- ③ ConfigurationPropertiesBindingPostProcessor后处理器
解析@ConfigurationProperties 注解。
二、深入AutowiredAnnotationBeanPostProcessor后处理器
1、基础准备
编写测试类,如下:
2、postProcessProperties方法
AutowiredAnnotationBeanPostProcessor#postProcessProperties方法源码,如下:
findAutowiringMetadata方法,如下:
inject方法,如下:
补充:${} 的解析器
3、按类型查找值
4、按方法参数类型查找值
三、结尾
以上即为Spring原理分析-容器&Bean(三)全部内容,感谢阅读