@Value注入属性的小bug

发布 : 2018-08-21 分类 : issue 浏览 :

@Value注入属性

工作中一些公共属性, 一般通过@Value注入的对象的属性中, 使用方式如下


@Configuration
public class WeChatConfig {

/**
* 微信支付参数
*/
@Value("${wx.appId}")
public String WX_APP_ID;
}

通过@Value注解, 将配置文件中的值注入到对象属性中, 在使用时只需要注入WeChatConfig对象然后调用即可, 而实际工作中, 往往用静态属性, 方便使用, 于是可以写成如下方式


@Configuration
public class WeChatConfig {

/**
* 微信支付参数
*/
@Value("${wx.appId}")
public static String WX_APP_ID;
}

使用此方式不会报错, 但是却取不到属性值, 并且不会报错. 变通方式可以如下:


@Configuration
public class WeChatConfig {

/**
* 微信支付参数
*/
@Value("${wx.appId}")
public static String WX_APP_ID;

@Value("${wx.app.id}")
private void setWxAppId(String wxAppId) {
WX_APP_ID = wxAppId;
}
}

注意: 此处的 set方法不可以设置为静态, 否则同样不能注入属性


本文作者 : liuzhihang
原文链接 : https://liuzhihang.com/2018/08/21/value-injects-a-small-bug-in-the-property.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

博客已萌萌哒运行(●'◡'●)ノ♥
Theme - BMW | Made With 💗 | Powered by GodBMW