springboot中在静态类中使用@Value获取application配置文件的值为null

一、问题:springboot中在静态类中使用@Value获取application配置文件的值为null,无法获取到值


二、描述:

在初始化的时候通过@Value注解获取值的时候,出现无论如何都获取不到配置文件的值。

@Value("${headToken}")
private static String headToken;

application.properties文件

#APIKey
headToken=933AC21670134

三、解决

因为我做的需求是通过post向第三方发送请求,将token设置到方法头上,发送的方法用的是静态方法,导致获取的值为null,原因是静态方法和一般的方法通过@Value获取值不同

public static Map<String, Object> sendPost(String url, String jsonParam)
{
    Gson gson = new Gson();
    Map<String, Object> resultMap = new HashMap<>();
    HttpPost method = new HttpPost(url);
    HttpResponse result =null;
    method.setHeader("APIKey", getHeadToken());
    try
    {......省略代码

将你的代码改为

private static String headToken;

@Value("${headToken}")
public  void setHeadToken(String headToken){
    HttpUtils.headToken = headToken;
}

public static String getHeadToken(){
    return headToken;
}

并且在类上面加上@Component注解,将类可以被容器发现

@Component
public class HttpUtils {


    private static final Logger LOGGER = LoggerFactory.getLogger(HttpUtils.class);
......

在需要用到的地方使用getHeadToken()即可

HttpResponse result =null;
method.setHeader("APIKey", getHeadToken());
try
{
......

多多指教


版权声明:本文为qq_36010615原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。