天天看點

Spring運作期間配置檔案解析傳回

在Spring中有一個接口,可以做到在代碼運作期間擷取到配置檔案的屬性,也就是可以做到自己定義并解析@Value("${}")注解的功能。

public interface EmbeddedValueResolverAware extends Aware {


	/**
	 * Set the StringValueResolver to use for resolving embedded definition values.
	 */
	void setEmbeddedValueResolver(StringValueResolver resolver);


}
           

就是EmbeddedValueResolverAware,這個接口裡有一個方法,功能就是:【把這個StringValueResolver用作解析内置定義的值(也就是配置檔案+系統預設配置)】,使用起來也比較簡單,如下:

先定義一個自己的類ValueResolverAwareConfig,然後實作EmbeddedValueResolverAware這個接口,然後把StringValueResolver設定給了自己的類的值。

@Configuration
public class ValueResolverAwareConfig implements EmbeddedValueResolverAware {

    public void setEmbeddedValueResolver(StringValueResolver resolver) {
        HttpInvokerHandler.setProps(resolver);
    }
}
           

然後在使用這個resolver的時候是這樣的:

resolver.resolveStringValue(key)
           

傳回值就是這個key對應在配置檔案裡的值了,為String類型。

借用這個,我們就可以實作自己的@Value注解,或者在代碼裡寫${""}這種形式的代碼并自己做解析。

繼續閱讀