Spring@Value为静态变量赋值

以前遇到过并解决的问题在今天忘了,记录一下

  • 必须声明为spring组件
  • set方法必须去static

平时使用的时候,直接在变量加上@Value就能取到配置文件的值

@Value("${path.url}")
private String url;

但是当url被static修饰之后,就取不到配置文件的值了

@Value("${path.url}")
private static String url;

这里是因为Spring Boot 不允许/不支持把值注入到静态变量中,但是也给出了解决的方案

// 1、将类注册给spring管理
@Component
public class Config {

    private static String url;

    // 2、在set方法上加上注解,并去掉方法上的static关键字
    @Value("${path.url}")
    public void setUrl(String url) {
        Config.url = url;
    }
}
上一篇 下一篇