1. 程式人生 > >SpringBoot原始碼之ConfigurableEnvironment Environment ConfigurablePropertyResolver PropertyResolver

SpringBoot原始碼之ConfigurableEnvironment Environment ConfigurablePropertyResolver PropertyResolver

PropertyResolver:介面以解析任何底層資源的屬性。

boolean containsProperty(String key);返回給定的屬性KEY是否可用於解析,如果給定金鑰的值不是NULL。

String getProperty(String key);返回與給定鍵關聯的屬性值,或者返回NULL,如果KEY不能被解析

String getProperty(String key, String defaultValue);返回與給定鍵關聯的屬性值,或者返回defaultValue,如果KEY不能被解析

<T> T getProperty(String key, Class<T> targetType);返回與給定鍵關聯的屬性值,或者返回NULL,如果KEY不能被解析

<T> T getProperty(String key, Class<T> targetType, T defaultValue);返回與給定鍵關聯的屬性值,或者返回defaultValue,如果KEY不能被解析

String getRequiredProperty(String key) throws IllegalStateException;返回與給定鍵關聯的屬性值,KEY不可為空

<T> T getRequiredProperty(String key, Class<T> targetType) throws IllegalStateException;返回與給定鍵關聯的屬性值,轉換為給定的targetType

String resolvePlaceholders(String text);解決$ {…}佔位符文字中,代之以相應的屬性值作為解決由{@link #getProperty}。不具有預設值的不可解析佔位符被忽略並通過不變的傳遞。

String resolveRequiredPlaceholders(String text) throws IllegalArgumentException;解決$ {…}佔位符文字中,代之以相應的屬性值作為解決由{@link #getProperty}。不具有預設值的不可解析佔位符丟擲IllegalArgumentException。

ConversionService 

型別轉換的服務介面。這是進入轉換系統的入口點。呼叫{@link #convert(Object, Class)}以使用該系統執行執行緒安全型別轉換。

ConverterRegistry 用於註冊具有型別轉換系統的轉換器。

ConfigurableConversionService 父類為ConversionService

配置介面由大多數但不是全部ConversionService型別實現。合併由{@link ConversionService}公開的只讀操作和{@link ConverterRegistry}的轉變操作,以便方便地臨時新增和刪除{@org.springframework.core.convert.converter.Converter
 * Converters。後者是特別有用當工作於{@link org.springframework.core.env.ConfigurableEnvironment ConfigurableEnvironment}介面在應用程式上下文引導程式碼

ConfigurablePropertyResolver:配置介面由大多數,如果不是所有{@link PropertyResolver}型別實現。提供訪問和定製將屬性值從一種型別轉換為另一種型別時使用的{@link org.springframework.core...ConversionService ConversionService}的工具。

ConfigurableConversionService getConversionService();返回對屬性執行型別轉換時使用的{@link ConfigurableConversionService}

void setConversionService(ConfigurableConversionService conversionService);設定對屬性執行型別轉換時使用的{@link ConfigurableConversionService}

void setPlaceholderPrefix(String placeholderPrefix);設定由這個解析器替換的佔位符必須開始的字首。

void setPlaceholderSuffix(String placeholderSuffix);設定由該解析器替換的佔位符的字尾必須結束。

void setValueSeparator(String valueSeparator);指定由此解析器替換的佔位符與其關聯的預設值之間的分隔字元,或者{@code null}如果沒有這樣的特殊字元應該作為值分隔符處理。

void setIgnoreUnresolvableNestedPlaceholders(boolean ignoreUnresolvableNestedPlaceholders);

void setRequiredProperties(String... requiredProperties);指定哪些屬性必須存在,以{@link #validateRequiredProperties()}.驗證

void validateRequiredProperties() throws MissingRequiredPropertiesException;驗證{@link#setRequiredProperties}指定的每個屬性是否存在,並解析為非{@code null}值。

Environment  :表示當前應用程式執行的環境的介面,應用環境模型的兩個關鍵方面:profiles和properties,有關屬性訪問的方法通過{@link PropertyResolver}超介面公開。配置檔案是一個命名邏輯組bean定義,只有在給定的配置檔案啟用時才能將其註冊到容器中。bean可以被分配給一個配置檔案,無論是在XML中定義還是通過註釋;屬性在幾乎所有應用程式中都扮演著重要的角色,並且可能來源於各種來源:屬性檔案、JVM系統屬性、系統環境變數、JNDI、servlet上下文引數、ad-hoc Properties物件、Maps等等。環境物件與屬性的關係的作用是為使用者提供方便的服務介面,用於配置屬性源並從屬性源解析屬性。託管在ApplicationContext中的BEAN 可以註冊為EnvironmentAware或者Environment為了直接查詢配置檔案狀態或解析屬性。環境物件的配置必須通過{@code ConfigurableEnvironment} 介面,從所有AbstractApplicationContext子類方法返回。

String[] getActiveProfiles();返回顯式為該環境啟用的配置檔案集。

String[] getDefaultProfiles();當未顯式設定活動配置檔案時,返回預設情況下要啟用的配置檔案集。

boolean acceptsProfiles(String... profiles);返回給定的配置檔案中的一個或多個是否是活動的,或者在沒有顯式活動配置檔案的情況下,是否將一個或多個給定的配置檔案包含在預設配置檔案中。

ConfigurableEnvironment 父類為Environment, ConfigurablePropertyResolver

配置介面由大多數,如果不是全部{@link Environment}型別實現。提供設定活動和預設配置檔案以及操作底層屬性源的工具。

當ApplicationContext正在使用環境時,在呼叫上下文的重新整理方法之前執行任何此類PropertySource操作都很重要。這確保了在容器引導過程中所有屬性源都可用。

void setActiveProfiles(String... profiles);

void addActiveProfile(String profile);

void setDefaultProfiles(String... profiles);

MutablePropertySources getPropertySources();

Map<String, Object> getSystemProperties();

Map<String, Object> getSystemEnvironment();

void merge(ConfigurableEnvironment parent);