我是 spring 的新手,我正在嘗試創(chuàng)建自己的用戶并對(duì)其進(jìn)行身份驗(yàn)證。到目前為止一切正常,我可以登錄和注銷,但我無法在身份驗(yàn)證成功/失敗處理程序中自動(dòng)連接我的用戶存儲(chǔ)庫。我可以在其他任何地方執(zhí)行此操作,例如在控制器中。我的處理程序看起來像這樣:@Servicepublic class MyAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {@AutowiredUserRepository userRepository;@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException { [...] User user = (User)authentication.getPrincipal(); user.setLastLogin(now); userRepository.save(user); [...]}}當(dāng)我試圖保存用戶時(shí),我得到一個(gè)空指針異常,因?yàn)?userrepository 為空。用戶存儲(chǔ)庫如下所示:@Repositorypublic interface UserRepository extends CrudRepository<User, Long> {Optional<User> findByName(String name);}但是,我可以像在 sucesshandler 中嘗試的那樣在其他任何地方自動(dòng)裝配它。例如在控制器中。有人能告訴我我做錯(cuò)了什么嗎?
2 回答

肥皂起泡泡
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)我使用這樣的類時(shí),我用@Component
而不是@Service
(美學(xué))來注釋它。
如果您在那時(shí)獲得 NPE,那是因?yàn)?code>MyAuthenticationSuccessHandler沒有得到管理。您要么掃描包裹,要么@Bean
在Configuration
課堂上掃描它。

炎炎設(shè)計(jì)
TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
您是否正在掃描包含您的處理程序的包裹?看起來你放了@Service 注釋,但如果你不掃描包,它將毫無用處,因?yàn)?spring 不會(huì)知道它。
添加回答
舉報(bào)
0/150
提交
取消