Spring 獲取 properties
文件單個屬性值,一般使用 @Value
件屬性值。
下面提供另一種基於Spring解析獲取 properties
文件單個屬性值的方式,使用 EmbeddedValueResolverAware
。
properties 文件:
db.user=root
db.password=123456
db.driverClass=com.mysql.jdbc.Driver
PropertiesUtil 工具類:
@Component
// @PropertySource("classpath:/dbconfig.properties") //指定 properties 文件,不是必須的
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);
}
}
使用:
@Component
public class Test {
@Autowired
private PropertiesUtil propertiesUtil;
public static void main(String[] args){
String s = propertiesUtil.getPropertiesValue("db.user");
}
}
說明: EmbeddedValueResolverAware 並不能讀取靜態文件,只能加載類似於mysqlURL = ${db.user}/${db.password}
的屬性值。