BeanPostProcessor、BeanFactoryPostProcessor使用场景,概述与AOP 的关系,简单demo

1 BeanFactoryPostProcessor

  1. 作用

    • BeanFactoryPostProcessor是在Spring容器实例化和初始化所有其他bean之前,对BeanFactory进行修改的钩子。
    • 它允许在容器创建bean之前,对BeanFactory中的配置元数据进行读取和修改。
  2. 时机

    • 在容器加载完所有的bean定义信息后,实例化bean之前执行。
  3. 使用场景

    • 修改BeanDefinition,比如修改bean的class属性、添加额外的属性等。
    • 注册额外的bean。

2 BeanPostProcessor

  1. 作用

    • BeanPostProcessor是在bean初始化阶段对bean进行处理的钩子。
    • 它允许在bean的初始化前后进行自定义处理。
  2. 时机

    • 在bean的初始化前后,即在调用BeanPostProcessorpostProcessBeforeInitialization方法和postProcessAfterInitialization方法时。
  3. 使用场景

    • 可以在bean初始化前后执行一些自定义逻辑
    • 用于实现例如AOP(面向切面编程)这样的高级功能。

 
3 和AOP的关系( 此处文字多由AI生成,准确性有待考证

        aop用的动态代理实现,动态代理又如何与bean扯上关系,答案就是BeanPostProcessor

        Spring AOP 是建立在包括BeanPostProcessor在内的Spring框架基础设施之上的更高层次抽象。BeanPostProcessor是Spring IOC容器中的一个核心组件,用于在Bean的生命周期中执行自定义操作,而AOP则是利用了这一机制来实现其切面逻辑的织入。

        具体到实现上,Spring AOP通过特定的BeanPostProcessor实现(如自动代理创建器DefaultAdvisorAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator)来创建代理对象。这些代理对象负责在方法调用前后执行切面逻辑,而这些逻辑的配置和组织则由AOP的高层次API(如使用@Aspect@Before@After等注解)来简化和抽象,使得开发者可以更加专注于业务逻辑和切面本身,而不需要关心底层的代理创建细节。

        因此,可以总结为:AOP是基于BeanPostProcessor等底层机制实现的高级特性,它提供了一套更加简洁、面向声明的编程模型来实现横切关注点的分离和管理。


4 DEMO示例,参考博文

定制化Bean的利器:BeanPostProcessor、BeanFactoryPostProcessor_自定义 beanpostprocessor-CSDN博客
 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值