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}
的属性值。