spring boot 源码分析(五) 配置文件加载之StandardEnvironment

一、前言

通过前面的一些介绍,我们从源码层面了解了spring boot 配置文件加载的类,但是前面的那篇的类中用到了很多的Environment,所以我觉得有必要去解析一下Environment,下面我们从StandardEnvironment入手,看以下Environment是做什么用的。

二、类图

首先我们通过Idea自带的类图生成工具,生成一下StandardEnvironment的类图。

我们可以通过类图清晰的明白StandardEnvironment的类的层次结构。

三、源码解析

package org.springframework.core.env;

//他是一个Environment的一个实现,适用于非WEB的应用
//除了ConfigurableEnvironment通用的属性解析和profile相关的操作外,StandardEnvironment还提供了
//system properties 和 system environment variables 两个属性
public class StandardEnvironment extends AbstractEnvironment {

	/** System environment property source name: {@value} */
	public static final String SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME = "systemEnvironment";

	/** JVM system properties property source name: {@value} */
	public static final String SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME = "systemProperties";


	//自定义属性源 添加属性到propertySources
    //systemProperties" 优先于 "systemEnvironment".
	@Override
	protected void customizePropertySources(MutablePropertySources propertySources) {
		propertySources.addLast(new MapPropertySource(SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME, getSystemProperties()));
		propertySources.addLast(new SystemEnvironmentPropertySource(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, getSystemEnvironment()));
	}

}

其中MapPropertySource与SystemEnvironmentPropertySource的相关类图如下。

猜你喜欢

转载自my.oschina.net/u/1178126/blog/1823531