Springboot使用@Value注入静态变量问题

有时候我们需要把配置文件中的变量注入给工具类中的静态变量,这时候我们直接在写变量上@Value(“${client.register.url}”)是注入不了静态变量的值始终是null。

@Value("${client.register.url}")
public static String url;

其原因是Spring不允许/不支持把值注入到静态变量中。

解决方案

​ Spring支持set方法注入,可以利用非静态方法注入静态变量。

  • 创建set方法,注意要去除static修饰符
  • 类需要有@Component或者@Service等注解扫描
@Component
public class ValidateUtil {

    public static String url;

    public static String getUrl() {
        return url;
    }
    
    @Value("${client.register.url}")
    public void setUrl(String url) {
        ValidateUtil.url = url;
    }
}

你可能感兴趣的:(Springboot使用@Value注入静态变量问题)