对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—————
喜欢本文的朋友,关注 程序猿的十万个为什么,收看更多精彩内容
![22e124eb6b125f937a3f245324c799b0.gif](https://i-blog.csdnimg.cn/blog_migrate/2d8b8b341c12e27b7a2392986b2dd7ce.gif)