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;
}
}