SpringBoot 中使用 @Value 读取配置文件中的参数始终为null
问题描述:
Spring MVC里配置文件里添加了下面几个自定义参数,但是始终获取不到配置文件里的对应值。
smsUrl=http://192.168.0.1:8888
username=888888
password=8888888
下面是错误示例
public class HttpClientUtil_WangSu {
@Value("#{smsProperties.smsUrl}")
private static String baseUrl ; //请求地址
@Value("#{smsProperties.username}")
private static String username; //用户名
@Value("#{smsProperties.password}")
private static String password; //密码
public static ShortMessageResModel HttpGet(String phone) {
//如果公共方法不是static的话,可以通过删掉定义变量处的static获取值。
}
}
注意点:
1、不能直接对配置文件里的变量使用static
2、类定义的上面要加上@Component注解
正确使用
@Component
public class HttpClientUtil {
private static String url; //请求地址
private static String un; //用户名
private static String pwd; //密码
@Value("#{smsProperties.smsUrl}")
public void setUrl(String smsUrl) {
HttpClientUtil.url = smsUrl;
}
@Value("#{smsProperties.username}")
public void setUn(String username) {
HttpClientUtil.un = username;
}
@Value("#{smsProperties.password}")
public void setPwd(String password) {
HttpClientUtil.pwd = password;
}
public static ShortMessageResModel HttpGet(String phone) {
//方法里面就可以使用定义的static变量了
}
}
参考链接
Spring中使用Value注解注入static属性的问题
SpringBoot 中使用 @Value 为 static 变量赋值