使用@Value 调用yml文件的配置数据,Debug显示,变量为null。
原因是:
1.导包必须要是:
import org.springframework.beans.factory.annotation.Value;
2.定义变量或者方法时候不能加静态关键字:static <==== 一定注意此关键字
因为@Value不能直接注入值给静态属性,Spring 不允许(或者说不支持)把值注入到静态变量中。也可以说是Springboot不建议这么做。
3.特殊情况:个人不建议使用,主要是觉得麻烦。
非要使用静态变量,可以迂回一下,使用set方法注入,比如:
package com.wanuw.utils;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Value;
//交给IOC容器管理
@Component
public class TencentCOSUtil {
// COS的SecretId
private static String secretId;
@Value("${tencent.cos.secretId}")
public void setSecretId(String secretId) { //此set方法必须不是静态的!!
this.secretId = secretId;
}
}
此方法必须将使用@Value的类加入IOC容器重管理才可以,本实例使用的是@Component。
加入IOC容器注解如下:
(1)@Component 其余层使用
(2)@Service service层使用
(3)@Controller controller层使用
(4)@Repository dao层使用
=============================分割线===================================
本文章只是个人观点,若有不对的地方请留言指教。