实现自定义扩展点_spring扩展API接口介绍

本文介绍了在Spring框架中实现自定义功能扩展的关键接口,包括BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor、BeanPostProcessor。通过实现Ordered和PriorityOrdered接口,可以控制这些扩展点的执行顺序。此外,还提到了ApplicationContextAware、InitializingBean、DisposableBean以及ApplicationListener等接口作为扩展手段。了解并利用这些扩展点,能够帮助开发者深入定制Spring应用。
摘要由CSDN通过智能技术生成

95266f6b0dd93d39581cb38a0c385661.gif

36dedf460f4660b6613abeeff52aec0a.gif

eea9087e28a6ea3daca34ca11e5a8cc2.png

对spring进行定制化功能扩展时,可以选择如下一些扩展点:

BeanFactoryPostProcessor

是beanFactory后置处理器,支持在bean factory标准初始化完成后,对bean factory进行一些额外处理。这时所有的bean的描述信息已经加载完毕,但是还没有进行bean初始化。例如PropertyPlaceholderConfigurer,就是在这个扩展点上对bean属性中的占位符进行替换。

BeanDefinitionRegistryPostProcessor

它扩展自BeanFactoryPostProcessor,在执行BeanFactoryPostProcessor的功能前,提供了可以添加bean definition的能力,允许在初始化一般bean前,注册额外的bean。例如可以在这里根据bean的scope创建一个新的代理bean。

BeanPostProcessor

提供了在bean初始化之前和之后插入自定义逻辑的能力。与BeanFactoryPostProcessor的区别是处理的对象不同,BeanFactoryPostProcessor是对beanfactory进行处理,BeanPostProcessor是对bean进行处理。

 注:上面这三个扩展点,可以通过实现Ordered和PriorityOrdered接口来指定执行顺序。实现PriorityOrdered接口的processor会先于实现Ordered接口的执行。

 ApplicationContextAware

可以获得ApplicationContext及其中的bean,当需要在代码中动态获取bean时,可以通过实现这个接口来实现。

 InitializingBean

可以在bean初始化完成,所有属性设置完成后执行特定逻辑,例如对自动装配对属性进行验证等等。

 DisposableBean

用于在bean被销毁前执行特定的逻辑,例如做一些回收工作等。

 ApplicationListener

用来监听spring的标准应用事件或者自定义事件。

 spring框架内部的BeanFactoryPostProcessor

ConfigurationClassPostProcessor:处理Configuration注解的类EventListenerMethodProcessor:处理实现ApplicationListener的接口类

 spring框架内部的BeanPostProcessor

AutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorApplicationContextAwareProcessorApplicationListenerDetectorConfigurationClassPostProcessor$ImportAwareBeanPostProcessor

—————END—————

喜欢本文的朋友,关注 程序猿的十万个为什么,收看更多精彩内容

f8fe504f0629ce6eb48790957e0f53fa.png

22e124eb6b125f937a3f245324c799b0.gif 点个[在看],是对小猿最大的支持!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值