袁艺

个人站

欢迎来到我的个人站~


static静态变量使用@Value注入方式

static静态变量使用@Value注入方式

在项目中遇到一个工具类,类中的变量都是static类型并且需要使用注解的方式注入值,原始的代码设计如下


@Data
@Slf4j
@Component
public class Utills {

    @Value("${ACCESS_ID}")
    private static String ACCESS_ID  ;

    @Value("${ACCESS_KEY}")
    private static String ACCESS_KEY ;

    @Value("${projectName}")
    private static String projectName ;
     ……
}

代码看起来没有什么问题,但是启动项目之后此类中的所有static值都是null

后来通过查阅资料,发现spring是不允许把值直接使用注解注入到静态变量中的,只能通过set方法注入。 正确的写法如下:

@Data
@Slf4j
@Component
public class Utills {

    private static String ACCESS_ID  ;

    private static String ACCESS_KEY ;

    private static String projectName ;
     ……

    @Value("${ACCESS_ID}")
    public  void setAccessId(String accessId) {
        ACCESS_ID = accessId;
    }

}