本节将对ConfigFileApplicationContextInitializer进行分析,关于该对象的基础定义代码如下:
@Deprecated public class ConfigFileApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {}
从ConfigFileApplicationContextInitializer的基础定义可以发现这是一个会被废弃的对象,虽然该对象会被废弃但是本节还会对它进行分析。该对象只实现了ApplicationContext-Initializer,具体的处理方法如下:
public void initialize(ConfigurableApplicationContext applicationContext) { new org.springframework.boot.context.config.ConfigFileApplicationListener() { public void apply() { addPropertySources(applicationContext.getEnvironment(), applicationContext); addPostProcessors(applicationContext); } }.apply(); }
在这段代码中主要是为了执行ConfigFileApplicationListener的apply方法,具体处理流程如下:
(1)添加属性源,本处添加的属性源从应用上下文中获取环境变量;
(2)添加后置处理器,本处所添加的后置处理器具体类型是PropertySourceOrderingPostProcessor。
在PropertySourceOrderingPostProcessor中关于后置处理器的处理代码如下:
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { reorderSources(this.context.getEnvironment()); } private void reorderSources(ConfigurableEnvironment environment) { DefaultPropertiesPropertySource.moveToEnd(environment); }
在这段处理代码中将指定的环境对象移到了最后一个元素位。