spring boot 源碼分析(五) 配置文件加載之StandardEnvironment

1、前言java

經過前面的一些介紹,咱們從源碼層面瞭解了spring boot 配置文件加載的類,可是前面的那篇的類中用到了不少的Environment,因此我以爲有必要去解析一下Environment,下面咱們從StandardEnvironment入手,看如下Environment是作什麼用的。spring

2、類圖ide

首先咱們經過Idea自帶的類圖生成工具,生成一下StandardEnvironment的類圖。工具

咱們能夠經過類圖清晰的明白StandardEnvironment的類的層次結構。code

3、源碼解析get

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的相關類圖以下。源碼

相關文章
相關標籤/搜索