@value注入静态变量时需要特殊处理,直接注入的话会注入失败。
@Value注入变量是在类的构造函数之后执行的,所以在构造函数中拿不到注入的变量。
普通注入
- 配置文件
- 注入
@Value("${custom.mqtt.enabled}")
public Boolean enabled;
注入静态变量
- 方法一
提前在类上增加 @Component注解
public static Boolean enabled;
@Value("${custom.mqtt.enabled}")
public void setEnabled(Boolean enabled){
Test.enabled = enabled;
}
-
方法二
- 如果你觉得@value注解麻烦。可以使用@ConfigurationProperties注解代替,这样比较简洁前缀要写合适
- 方法名(例如setOssUrl)必须和属性保持一致,例如写为setUrl()会注入失败
- 类上加入@Component注解
- 方案三
- 类上加入@Component注解
- @PostConstruct注解修饰的方法中进行赋值操作