第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

具有構(gòu)造函數(shù)的類的依賴注入需要有關(guān)登錄 SecurityContext 的用戶的信息

具有構(gòu)造函數(shù)的類的依賴注入需要有關(guān)登錄 SecurityContext 的用戶的信息

倚天杖 2024-01-17 17:06:34
我想使用 HK2 DI 根據(jù)登錄 Jersey API 的用戶自動(dòng)注入類的新實(shí)例。用戶使用 AuthenticationFilter 類進(jìn)行登錄,我可以在所有端點(diǎn)中將其放入 @Context SecurityContext 中。問題是我有一個(gè) DAO 類,需要實(shí)例化有關(guān)用戶的信息。這只是我應(yīng)該在數(shù)據(jù)庫上執(zhí)行查詢的架構(gòu)。所以我的Dao的構(gòu)造函數(shù)是這樣的:public UserDao(String schemaCompte) {    super(schemaCompte);}解決方案似乎是使用工廠通過 HK2 實(shí)例化我的 Dao,所以我嘗試創(chuàng)建一個(gè)這樣的:public class UserDaoFactory implements Factory<UserDao> {    @Context SecurityContext securityContext;    @Override    public UserDao provide() {        User userPrincipal = (User) securityContext.getUserPrincipal();        return new UserDao(userPrincipal.getCode());    }    @Override    public void dispose(UserDao userDao) {    }}綁定是這樣的:bindFactory(UserDaoFactory.class).to(UserDao.class)和實(shí)施:@Injectpublic UserSvc(UserDao userDao) {    ...}但是這個(gè)工廠在我的應(yīng)用程序的生命周期中被調(diào)用得太早,并且 SecurityContext 仍然是空的。據(jù)我了解,在運(yùn)行時(shí)執(zhí)行的解決方案是將工廠綁定為代理,如下所示:bindFactory(UserDaoFactory.class).proxy(true).to(UserDao.class)但是當(dāng)我這樣做時(shí),我得到一個(gè)運(yùn)行時(shí)異常:java.lang.RuntimeException: java.lang.InstantiationException: com.metier.user.UserDao_$$_jvst5c_0如果有人有想法,我已經(jīng)嘗試了很多事情,但我完全不走運(yùn)
查看完整描述

1 回答

?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊

所以,事實(shí)證明我缺少的是@PreMatching我在 Jersey Api 中注冊(cè)的提供程序中的注釋。

此注釋告訴 Jersey 在執(zhí)行其他所有操作之前執(zhí)行此過濾器,甚至與調(diào)用的端點(diǎn)進(jìn)行匹配。

因此,在這個(gè)過濾器中,我只是讀取了我的令牌,它可以在UserDaoFactory需要注入用戶帳戶的地方使用。

我制作了一個(gè)小型 github 存儲(chǔ)庫來解釋我的觀點(diǎn): https: //github.com/m4nu56/jersey-hk2以及一篇 Medium 文章:https://medium.com/@mnu/jersey-injection-dependency-example-with -hk2-84ebfb7cb2d2

最后我沒有使用工廠,因?yàn)槲覜]有意識(shí)到我可以直接在我的 Dao 構(gòu)造函數(shù)中注入用戶或帳戶。


查看完整回答
反對(duì) 回復(fù) 2024-01-17
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)