在基於Spring獲取properties文件屬性值的時候,一般使用@Value的方式注入配置文件屬性值,但是總是需要引入這些多余的變量,有點不爽,今天研究了下,基於Spring解析@Value的方式,使用EmbeddedValueResolverAware解析配置文件,實現起來也很簡單
工具類如下:
@Component public class PropertiesUtil implements EmbeddedValueResolverAware { private StringValueResolver resolver; @Override public void setEmbeddedValueResolver(StringValueResolver resolver) { this.resolver = resolver; } /** * 獲取屬性,直接傳入屬性名稱即可 * @param key * @return */ public String getPropertiesValue(String key) { StringBuilder name = new StringBuilder("${").append(key).append("}"); return resolver.resolveStringValue(name.toString()); } }
使用:
@Autowired
private PropertiesUtil propertiesUtil;
String s = propertiesUtil.getPropertiesValue("test.hello");
不同於讀取靜態文件的方式,這種方式能加載類似於 test.hello = ${test.a}/${test.b}的屬性值