springboot 如何解決static調(diào)用service為null
@PostConstruct注解好多人以為是Spring提供的。其實是Java自己的注解。
Java中該注解的說明:@PostConstruct該注解被用來修飾一個非靜態(tài)的void()方法。被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器執(zhí)行一次。PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行。
通常我們會是在Spring框架中使用到@PostConstruct注解 該注解的方法在整個Bean初始化中的執(zhí)行順序:
Constructor(構(gòu)造方法) -> @Autowired(依賴注入) -> @PostConstruct(注釋的方法)
實戰(zhàn):
在靜態(tài)方法中調(diào)用依賴注入的Bean中的方法。
@Componentpublic class LeaveCode { @Autowired private IPlaLeaveApplyService plaLeaveApplyService; public static LeaveCode leaveCode; /** * 解決 static方法調(diào)用 注入的service為null */ @PostConstruct public void init(){leaveCode = this;leaveCode.plaLeaveApplyService = this.plaLeaveApplyService; } }SpringBoot 靜態(tài)類引入service 空指針/NULL
Spring注入service后,正常情況下非靜態(tài)方法是可以正常使用注冊的service的,當時用靜態(tài)類引用的時候,靜態(tài)類static方法會將spring注入的service清空。
造成引用空指針的情況,如何解決呢?@Componentpublic class UserUtils { @Autowired private UserService userService; private static UserUtils userUtils; @PostConstruct public void init() {userUtils = this;userUtils.userService = this.userService; }}
使用:
User user = userUtils.userService.getUser(loginCode);
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. docker容器調(diào)用yum報錯的解決辦法2. 淺談JavaScript宏任務和微任務執(zhí)行順序3. idea設(shè)置代碼格式化的方法步驟4. Django使用HTTP協(xié)議向服務器傳參方式小結(jié)5. vue+elementUI下拉框回顯問題及解決方式6. VMware中如何安裝Ubuntu7. idea環(huán)境下Maven無法正常下載pom中配置的包問題8. Python幾種常見算法匯總9. idea設(shè)置自動導入依賴的方法步驟10. 使用IntelliJ IDEA 配置安卓(Android)開發(fā)環(huán)境的教程詳解(新手必看)

網(wǎng)公網(wǎng)安備