1.場景
啓動springboot整合shiro項目,開始正常,登錄用戶驗證報異常,如下:
java.lang.NullPointerException: null
at com.realm.UserRealm.doGetAuthenticationInfo(UserRealm.java:73) ~[classes/:na]
報錯代碼
UserBean bean = userService.findByName(token.getUsername());
2.分析:NullPointerException, 說明userService沒有注入進來,爲什麼?
解釋shiro 的realm本身相當於過濾器,而在登錄訪問時會先走過濾器,再執行service注入,realm在前調用還沒注入service這就會出現還沒有進行service注入,已經再realm中調用注入的對象,因此就會出現上述異常
3.解決:
將realm聲明bean的形式生成,那麼再生成時就會強制注入service對象,這樣就避免了上述異常,代碼如下: