Spring Bean生命周期:聊透扩展点的流程及应用

  Spring之所以具备如此强大的生态,扩展能力强是很重要的一方面,这得益于它本身提供了非常多的扩展点。本节我们针对Spring生命周期中涉及到的扩展点来看一看,究竟它们是何方神圣?

1 扩展点流程

  Spring生命周期的主要扩展点如图:

2 扩展点解析及应用场景

ApplicationContextInitializer接口

  用于在执行refresh()之前初始化ConfigurationApplicationContext的回调接口。
通常用于需要对应用程序上下文进行编程初始化的web应用程序中。例如,注册属性源或根据上下文环境激活配置文件。 比如:Spring boot就写了几个ApplicationContextInitializer的实现类,常见作用:

  • ConfigurationWarningsApplicationContextInitializer:对于一般配置错误在日志中作出警告
  • ContextIdApplicationContextInitializer:设置ApplicationContext#getId()所获取的ID值,默认取spring.application.name属性值,没有配置时默认为 application
  • DelegatingApplicationContextInitializer:使用环境属性context.initializer.classes指定的初始化器(initializers)进行初始化工作,如果没有指定则什么都不做
    ......
    实现方式如下
public class CustomApplicationContextInitializer implements ApplicationContextInitializer {
    @Override
    public void initialize(ConfigurableApplicationContext applicationContext) {
        // 打印当前方法类名和方法名,调试用
        CountUtil.println(getClass(),Thread.currentThread().getStackTrace()[2].getMethodName());
    }
}
复制代码

在配置文件中设置:

context.initializer.classes=com.zyq.demo.expand.CustomApplicationContextInitializer
复制代码

BeanDefinitionRegistryPostProcessor

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值