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

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