乐趣区

Spring如何为静态变量注入值

Spring 无法直接给静态变量注入值,因为静态变量不属于对象,只属于类,也就是说在类被加载字节码的时候变量已经初始化了,也就是给该变量分配内存了,导致 spring 忽略静态变量。所以如下这种写法就是错误的,这样是无法注入的,在使用该变量的时候会导致空指针错误:
@Autowired
private static IOptionService optionService;
Spring 依赖注入是依赖 set 方法,静态变量不属于对象,只属于类。解决方法就是加上非静态的 set 方法,如下:
private static IOptionService optionService;

@Autowired
public void setOptionService(IOptionService optionService) {
Commons.optionService = optionService;
}

退出移动版