Common.java是一個工具類。
Spring無法直接給靜態變量注入值,因為靜態變量不屬於對象,只屬於類,也就是說在類被加載字節碼的時候變量已經初始化了,也就是給該變量分配內存了,導致spring忽略靜態變量。所以如下這種寫法就是錯誤的,這樣是無法注入的,在使用該變量的時候會導致空指針錯誤:
@Autowired private static IOptionService optionService;
Spring 依賴注入是依賴set方法,靜態變量不屬於對象,只屬於類。解決方法就是加上非靜態的set方法,如下:
private static IOptionService optionService; @Autowired public void setOptionService(IOptionService optionService) { Commons.optionService = optionService; }
這樣就能在工具類中使用optionService了。