如何在容器启动阶段进行人工的干预

103 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

在之前文章中我们有讨论过,我们可以在容器启动阶段做一些“其他事情”来“更好地”完成容器启动的工作。

这里我们讲一下,如何在容器的启动阶段的过程中,根据分别的阶段的步骤的特点来完成相应的“干预”。

如何在容器启动阶段进行干预

首先我们介绍一个接口,就是在Spring 容器中,用来负责容器扩展机制的:BeanFactoryPostProcessor。

这个机制的作用方式是让我们在容器实例化对象之前,对注册到容器中的BeanDefinition 保存的信息做相应的修改。

这个机制的英文的意思就是:Bean 工厂的后置处理器。

我们知道并已经理解了,Bean 工厂的作用就是在容器启动阶段,所有Bean 的信息存放的地方,当我们需要某个Bean 的时候,就是从这个工厂生产的Bean。

这个机制就相当于在容器实现的第一个阶段(即容器启动阶段)的最后加入一道工序,于是我们就可以对最终的BeanDefinition 根据自己的需求,做一些额外的操作。

如:修改Bean 定义的一些属性;给bean 定义增加一些信息等等操作。

如果要自定义实现BeanFactoryPostProcessor,那么我们就需要去实现Spring 框架中的这个接口:org.springframework.beans.factory.config.BeanFactoryPostProcessor

但是,有的时候在一个容器中,可能会有多个BeanFactoryPostProcessor 存在,这个时候我们就同时需要实现Spring 中提供的保证BeanFactoryPostProcessor 执行顺序的接口:org.springframework.core.Ordered

这样对于各个我们系统中的BeanFactoryPostProcessor 就可以按照指定的顺序来执行了。(当然了,如果顺序不重要,那么就不需要太在意这个)

总结

这篇文章我们主要是介绍Spring 容器的启动阶段提供了什么机制来进行人工干预,可以作为一个概念性的入门指导。