原因分析
在后端开发当中我们可能会使用到工具类,而一般的工具类中的方法都是静态方法。而@Value注解只能给普通变量注入值,不能直接给静态变量赋值。
知识拓展
静态变量(即类变量)是一个类的属性,而不是对象的属性。spring依赖注入是基于对象层面上的。
static变量在对象创建前就分配过内存了,而spring的注入是在创建对象的时候注入的。
解决方案
可以提前定义一个set方法,这个方法是非静态的。
@Slf4j
@Component
public class xxxUtil {
/**
* Url
*/
private static String url;
/**
* 注入 配置文件值
*
* @param oamUrl 配置文件值
*/
@Value("${server.url}")
public void setOamUrl(String url) {
xxxUtil.url = url;
}
}
评论 (0)