Spring 中 EmbeddedValueResolverAware

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章