系統為SpringMVC框架,在開發的過程中有一些工具類需要調用下由spring管理的service層。但是一進注入不進來,報null異常;
在嘗試了網上的一系列方法后,還是沒有解決。網上的解決方法主要有以下幾種:
1、將工具類申明為spring組件,如@controller @compent 等,在spring自動掃描包設置中將工具類所在的包加進來; 無效
2、new一個service; 無效 而且不符合spring管理;
山窮水盡后,找到了一個另類的解決辦法,代碼原理還不太清楚,只是大概猜測下,有錯誤的地方,大家留言指正:
- @Component //申明為spring組件
- public class TestUtils {
- @Autowired
- private TestService testService; //添加所需service的私有成員
- private static TestUtils testUtils ; // 關鍵點1 靜態初使化 一個工具類 這樣是為了在spring初使化之前
- public void setTestService(TestService testService) {
- this.testService = testService;
- }
- @PostConstruct //關鍵二 通過@PostConstruct 和 @PreDestroy 方法 實現初始化和銷毀bean之前進行的操作
- public void init() {
- testUtils = this;
- testUtils.testService = this.testService; // 初使化時將已靜態化的testService實例化
- }
這樣下面的代碼中就可以通過 testUtils.testService 來調用service處理
