栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring BeanPostProcessor到底如何工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring BeanPostProcessor到底如何工作?

Spring doc在使用BeanPostProcessor定制bean下解释了BPP 。BPP Bean是一种特殊的Bean,它是在其他任何Bean之前创建并与新创建的bean交互的。通过这种构造,Spring可以让你简单地实现

BeanPostProcessor
自己,就可以连接并自定义生命周期行为。

具有自定义的BPP,例如

public class CustomBeanPostProcessor implements BeanPostProcessor {    public CustomBeanPostProcessor() {        System.out.println("0. Spring calls constructor");    }    @Override    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {        System.out.println(bean.getClass() + "  " + beanName);        return bean;    }    @Override    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {        System.out.println(bean.getClass() + "  " + beanName);        return bean;    }}

将被调用,并为每个创建的bean打印出类和bean名称。

要了解该方法如何适应bean的生命周期,以及何时确切调用该方法,请检查文档

postProcessBeforeInitialization(Object bean,String beanName)在任何bean初始化回调(如InitializingBean的afterPropertiesSet或自定义init-method)之前,将此BeanPostProcessor应用于给定的新bean实例。

postProcessAfterInitialization(Object bean,String beanName)在任何bean初始化回调(如InitializingBean的afterPropertiesSet或自定义的init-method)之后,将此BeanPostProcessor应用于给定的新bean实例。

重要的一点是

该bean将已经用属性值填充。

对于与关系的关系

@PostConstruct
,该注释是一种声明
postProcessAfterInitialization
方法的便捷方法,当你通过注册
CommonAnnotationBeanPostProcessor
或指定
<context:annotation-config />in bean
配置文件时,Spring会意识到这一点。该
@PostConstruct
方法将在其他任何方法之前还是之后执行
postProcessAfterInitialization
取决于order属性

你可以配置多个

BeanPostProcessor
实例,并且可以通过设置
order
属性来控制这些
BeanPostProcessor
的执行顺序。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号