關於springboot工具類中@Autowired注入bean,用static直接修飾,靜態方法使用bean時報空指針異常錯誤

 錯誤場景:spring

springboot + mybatis sql

在工具類的靜態方法中,須要使用mapper(其餘bean也同樣),因此最開始直接使用@Autowired進行了注入,代碼以下:數據庫

 @Autowired private static Mt4UsersMapper mt4UsersMapper; @Autowired private static UserBankAccountsMapper userBankAccountsMapper; @Autowired private static UserProfilesMapper userProfilesMapper;

接着在下面的靜態方法中直接進行了使用,查詢數據表(sql語句、數據庫數據都正常,理論上是能夠查出數據的),然而報了下面的空指針錯誤:springboot

看了相關資料瞭解到,這樣是沒法注入成功的,因此不管你怎麼查詢都是null,要想在非spring管理下的普通類中注入bean,不能直接用@Autowired進行注入,看了幾種辦法,這裏就只記錄一種我認爲最簡單的@PostConstruct的方式注入的吧 QAQ:mybatis

@Component public class CreateReportTemFileUtil2 { @Autowired private Mt4UsersMapper testmt4UsersMapper; private static Mt4UsersMapper mt4UsersMapper; @Autowired private UserBankAccountsMapper testuserBankAccountsMapper; private static UserBankAccountsMapper userBankAccountsMapper; @Autowired private UserProfilesMapper testuserProfilesMapper; private static UserProfilesMapper userProfilesMapper; @PostConstruct public void init(){ mt4UsersMapper = this.testmt4UsersMapper; userBankAccountsMapper = this.testuserBankAccountsMapper; userProfilesMapper = this.testuserProfilesMapper; } }

劃重點註解也很重要。app

 

這樣就注入成功啦!!後面代碼直接跑通了,再也不一直報空指針異常了,這個方法 不用再新建一個類什麼的,感受仍是方便。固然這也是有必定侷限性的,由於mapper那邊是加了@Repository的。工具

相關文章
相關標籤/搜索