首页 > 其他分享 >【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】

时间:2023-04-04 15:36:39浏览次数:35  
标签:生命周期 Autowired Spring Bean 处理器 AutowiredAnnotationBeanPostProcessor 原理

Spring原理分析-Bean生命周期

一、Bean生命周期
1、Bean生命周期测试
2、生命周期顺序


  • 二、自定义BeanPostProcessor实现增强


  • 三、模板方法-设计模式


一、Bean生命周期

1、Bean生命周期测试

  • ① 编写LifeCycleBean类

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期

  • ② 编写启动类

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_02

  • ③ 测试

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_03


2、生命周期顺序

执行顺序:构造方法 → @Autowired → @PostConstruct → @PreDestroy

二、自定义BeanPostProcessor实现增强

  • ① 实现InstantiationAwareBeanPostProcessor与DestructionAwareBeanPostProcessor接口

Ⅰ postProcessBeforeDestruction:销毁前执行,如@PreDestroy;

Ⅱ postProcessBeforeInstantiation:实例化前执行,返回的对象会替换原本的bean;

Ⅲ postProcessAfterInstantiation:实例化后执行,返回的对象会替换原本的bean;

Ⅳ postProcessProperties:依赖注入阶段执行,如@Autowired、@Value、@Resource;

Ⅴ postProcessBeforeInitialization:初始化前执行,返回的对象会替换原本的bean,如@PostConstruct、@ConfigurationProperties;

Ⅵ postProcessAfterInitialization:初始化后执行,,返回的对象会替换原本的bean,如代理增强。

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_04

  • ② 测试

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_05


三、模板方法-设计模式

  • ① 编写测试类

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_06

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_07


  • ② 编写后置处理器接口

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_08

  • ③ 修改MyBeanFactory类

添加如下属性,及方法:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_09

此时,由于模板方法还没有实现,所以直接测试并没有变化。

  • ④ 修改测试类main方法

通过匿名内部类形式实现接口中的方法,如下:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_10

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_11


四、结尾

以上即为Spring原理分析-容器&Bean(二)的全部内容



》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

接下来讲解:

Spring原理分析-Bean后处理器

  • 一、Bean后处理器
    1、基础准备

    2、AutowiredAnnotationBeanPostProcessor后处理器

   3、CommonAnnotationBeanPostProcessor后处理器

  4、ConfigurationPropertiesBindingPostProcessor后处理器

  5、总结

  • 二、深入AutowiredAnnotationBeanPostProcessor后处理器
    1、基础准备
    2、postProcessProperties方法
    3、按类型查找值
    4、按方法参数类型查找值

一、Bean后处理器

1、基础准备

  • ① 编写实体类

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_12

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_13

  • ② 编写测试类

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_14

  • ③ 测试

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_15


@Autowired、@Resource、@PostConstruct、@PreDestroy均为生效。

2、AutowiredAnnotationBeanPostProcessor后处理器

解析:@Autowired、@Value 注解,如下配置:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_16

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_17


3、CommonAnnotationBeanPostProcessor后处理器

解析:@Resource、@PostConstruct、@PreDestroy 注解,如下配置:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_18


【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_19


由此也可以看出,先解析 @Resource,后解析 @Autowired 注解。

4、ConfigurationPropertiesBindingPostProcessor后处理器

解析:@ConfigurationProperties 注解,如下配置:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_20

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_21


5、总结

  • AutowiredAnnotationBeanPostProcessor后处理器

解析@Autowired、@Value 注解;


  • CommonAnnotationBeanPostProcessor后处理器

解析@Resource、@PostConstruct、@PreDestroy 注解;


  • ConfigurationPropertiesBindingPostProcessor后处理器

解析@ConfigurationProperties 注解。


二、深入AutowiredAnnotationBeanPostProcessor后处理器

1、基础准备

编写测试类,如下:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_22

2、postProcessProperties方法

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_23

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_24


AutowiredAnnotationBeanPostProcessor#postProcessProperties方法源码,如下:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_25

findAutowiringMetadata方法,如下:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_26

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_27


【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_原理分析_28


inject方法,如下:

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_29

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_30


补充:${} 的解析器

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_31

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_32


3、按类型查找值

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_33

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_34


4、按方法参数类型查找值

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_35

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_36

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_测试类_37

【Spring原理分析-Bean生命周期+Spring原理分析-Bean后处理器】_生命周期_38


三、结尾

以上即为Spring原理分析-容器&Bean(三)全部内容,感谢阅读


标签:生命周期,Autowired,Spring,Bean,处理器,AutowiredAnnotationBeanPostProcessor,原理
From: https://blog.51cto.com/u_15874356/6168717

相关文章

  • 【Spring原理分析-Aware接口&InitializingBean&初始化与销毁执行顺序】
    一、Aware接口&InitializingBean1、基础准备2、总结3、补充:EmbeddedValueResolverAware二、@Autowired和@PostConstruct注解失效1、基础准备2、失效情形3、失效原因4、使用Aware接口避免失效5、总结补充总结一、Aware接口&InitializingBean1、基础准备①编写MyBean实......
  • 解决:Failed to start bean 'documentationPluginsBootstrapper'
    原因:在springboot2.6.0以后将SpringMVC默认路径匹配策略从AntPathMatcher更改为PathPatternParser,导致出错,解决办法是切换会原先的AntPathMatcher。解决:配置文件中加上spring:mvc:pathmatch:matching-strategy:ant_path_matcher ......
  • 原理图1
    【1】用STM32单片机驱动一个5V的继电器:继电器 SRD-05VDC-SL-C  引脚:一共五个引脚,两个是线圈(1和4),一个是公共端(5),一个常开一个常闭(2和3)三极管:STM32单片机引脚高电平为3.3V,用NPN型三极管,则高电平导通,低电平截止。如果用PNP型,由于三极管压降是0.7V,即使基极接入高电平3.3V,由于......
  • SpringBoot中如何实现业务校验,这种方式才叫优雅!
    大家好,我是飘渺。在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验:参数校验业务规则校验首先我们先看看参数校验。参数校验参数校验很好理解,比如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。......
  • 在IDEA创建SpringBoot项目没有src等文件夹
    问题在IDEA创建SpringBoot项目的时候,有时候创建完成了,但是没有src等文件夹,可能前几分钟还行,突然就不行了。原因可能是网络等问题,我也还没弄懂,或者哪位大神知道的,可以留言告知一下。解决办法办法一:自己手动创建办法二:通过网页创建,下载压缩包,再通过IDEA打开即可阿里云:https:/......
  • Cadence应用笔记:原理图导PDF
    设置1.打开菜单栏选择打印2.勾选黑白3.选择一个虚拟打印机......
  • 创建SpringSecurity项目
    一.搭建SpringBoot开发环境我们的SpringSecurity系列教程会基于SpringBoot环境,并且以案例迭代的方式进行开发,所以为了方便后续案例的编写,我们先提前搭建一个SpringBoot环境的Web项目。1.创建SpringBoot项目如各位对SpringBoot基础不熟悉,请参考本人的SpringBoot系列教程:blo......
  • MySQL 的 crash-safe 原理解析
    vivo互联网技术微信公众号 作者:xieweipengMySQL作为当下最流行的开源关系型数据库,有一个很关键和基本的能力,就是必须能够保证数据不会丢。那么在这个能力背后,MySQL是如何设计才能保证不管在什么时间崩溃,恢复后都能保证数据不会丢呢?有哪些关键技术支撑了这个能力?本文将为我们一......
  • Glide生命周期原理
    vivo互联网技术微信公众号 作者:连凌能AndroidApp中图片的展示是很基本也很重要的一个功能,在Android平台上有很多的图片加载解决方案,但是官方认可的是Glide。AndroidApp的页面是有生命周期的,Glide比较好的一个功能就是具有生命周期管理功能,能够根据页面和APP的生命周期来管理......
  • 图解 Promise 实现原理(一)—— 基础实现
    于vivo互联网技术微信公众号 作者:孔垂亮很多同学在学习Promise时,知其然却不知其所以然,对其中的用法理解不了。本系列文章由浅入深逐步实现Promise,并结合流程图、实例以及动画进行演示,达到深刻理解Promise用法的目的。本文适合对Promise的用法有所了解的人阅读,如果还不......