楼主: dlmxv90851
1607 0

Vue Element+Node.js开发企业通用管理后台系统 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

96%

还不是VIP/贵宾

-

威望
0
论坛币
266 个
通用积分
55.0568
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1668 点
帖子
98
精华
0
在线时间
69 小时
注册时间
2020-4-17
最后登录
2024-9-19

楼主
dlmxv90851 发表于 2022-9-3 12:08:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Vue Element+Node.js开发企业通用管理后台系统

Spring5源码5-Bean生命周期后置处理器

主要说明三种生命周期增强器:

  • BeanFactoryPostProcessor:BeanFactory 后置处理器

    • BeanDefinitionRegistryPostProcessor:bean定义注册后置处理器
    • BeanFactoryPostProcessor
  • BeanPostProcessor:Bean后置处理器

    • BeanPostProcessor
    • MergedBeanDefinitionPostProcessor
    • SmartInstantiationAwareBeanPostProcessor
    • InstantiationAwareBeanPostProcessor
  • InitializingBean
  • DisposableBean (销毁的方案我们暂时不做说明)

1.1 什么是 BeanPostProcessor

BeanPostProcessor 是 Spring提供给我们的一个非常重要的扩展接口,并且Spring内部的很多功能也是通过 BeanPostProcessor 来完成的(目前看到最典型的就是 AnnotationAwareAspectJAutoProxyCreator 的 注入)。

1.2 BeanPostProcessor 的种类

BeanPostProcessor 在Spring 中的子类非常多(idea 显是有46个),比如

  • InstantiationAwareBeanPostProcessorAdapter : 在Spring 的bean加载过程中起了非常重要的作用
  • AnnotationAwareAspectJAutoProxyCreator : bean 创建过程中的 属性注入时起作用
  • AspectJAwareAdvisorAutoProxyCreator : Aspect 的 AOP 功能实现也全仰仗BeanPostProcessor 的特性。
1.3 创建时机

BeanFactoryPostProcessor:在 Spring 启动时对BeanDefinition 的创建 进行干预处理。

BeanPostProcessor:一是Bean对应的BeanDefinition 的创建。二是Bean 实例的创建。因为在 Spring容器中,Bean的创建并非仅仅通过反射创建就结束了,在创建过程中,需要考虑到Bean针对Spring容器中的一些属性,所以BeanDefinition 中不仅仅包含了 Bean Class 文件信息,还包含了 当前Bean在Spring容器中的一些属性,比如在容器中的作用域、是否懒加载、别名等信息。当Bean 进行实例化创建时需要依赖于对应的BeanDefinition 提供对应的信息。。

而由于 BeanPostProcessor 是参与了 Bean 创建过程。所以其创建一定在普通 Bean 之前。实际上 BeanPostProcessor 的创建时在 Spring 启动时容器刷新的时候。

BeanPostProcessor 的 BeanDefinition 创建时机和普通 Bean没有区别,都是在Spring 启动时的BeanFactoryPostProcessor 中完成(确切的说是 ConfigurationClassPostProcessor 中完成)。

而BeanPostProcessor 的实例创建要优先于普通bean创建,Spring启动过程中会调用AbstractApplicationContext#registerBeanPostProcessors 方法。 在这个方法中,Spring 会从容器中获取到所有BeanPostProcessor 类型的beanName, 通过 beanFactory.getBean 方法获取到对应实例,进行排序后注册到 BeanFactory.beanPostProcessors 属性中.当容器需要执行 BeanPostProcessor 方法时可以直接从 beanPostProcessors 中获取即可。


Vue Element+Node.js开发企业通用管理后台系统

download链接:https://pan.baidu.com/s/1AThK9dm0BGIfdsL0gA03cg?pwd=hsjg

提取码:hsjg
--来自百度网盘超级会员V5的分享


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Element Node 通用管理 LEM MEN

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 08:46