SpringBoot ApplicationListener イベント・リスニング・インターフェースの使用の問題を解決する方法
May 26, 2023 am 10:13 AM
springbootapplicationlistener
問題を再現しましょう。以下のコードを見て、問題があるかどうかとその解決方法を確認してください:
@RequestMapping("verify") @RestController @DependsOn({"DingAppInfoService","CloudChatAppInfoService"}) public class LoginAction { @Qualifier("ElderSonService") @Autowired private ElderSonService elderSonService; @Qualifier("EmployeeService") @Autowired private EmployeeService employeeService; @Qualifier("UserThreadPoolTaskExecutor") @Autowired private ThreadPoolTaskExecutor userThreadPoolTaskExecutor; private static AuthRequest ding_request = null; private static RongCloud cloud_chat = null; private static TokenResult register = null; private static final ThreadLocal<String> USER_TYPE = new ThreadLocal<>(); /** * 注意不能在bean的生命周期方法上添注@CheckAppContext注解 */ @PostConstruct public void beforeVerifySetContext() { AppContext.fillLoginContext(); Assert.hasText(AppContext.getAppLoginDingId(), "初始化app_login_ding_id错误"); Assert.hasText(AppContext.getAppLoginDingSecret(), "初始化app_login_ding_secret错误"); Assert.hasText(AppContext.getAppLoginReturnUrl(), "初始化app_login_return_url错误"); Assert.hasText(AppContext.getCloudChatKey(), "初始化cloud_chat_key错误"); Assert.hasText(AppContext.getCloudChatSecret(), "初始化cloud_chat_secret错误"); if (!(StringUtils.hasText(AppContext.getCloudNetUri()) || StringUtils.hasText(AppContext.getCloudNetUriReserve()))) { throw new IllegalArgumentException("初始化cloud_net_uri与cloud_net_uri_reserve错误"); } ding_request = new AuthDingTalkRequest( AuthConfig.builder(). clientId(AppContext.getAppLoginDingId()). clientSecret(AppContext.getAppLoginDingSecret()). redirectUri(AppContext.getAppLoginReturnUrl()).build()); cloud_chat = RongCloud.getInstance(AppContext.getCloudChatKey(), AppContext.getCloudChatSecret()); } .....以下API方法无所影响...... }
不可解なのは、コントローラー コンポーネントの初期化メソッドのコードです。 ##
public static void fillLoginContext() { DingAppInfo appInfo = SpringContextHolder.getBean(DingAppInfoService.class).findAppInfo(APP_CODE); setDingVerifyInfo(appInfo); CloudChatAppInfo cloudChatAppInfo = SpringContextHolder.getBean(CloudChatAppInfoService.class).findAppInfo(APP_CODE); setCloudChatInfo(cloudChatAppInfo); } public static void setDingVerifyInfo(DingAppInfo dingAppInfo){ if (dingAppInfo.checkKeyWordIsNotNull(dingAppInfo)) { put(APP_LOGIN_DING_ID, dingAppInfo.getApp_id()); put(APP_LOGIN_DING_SECRET, dingAppInfo.getApp_secret()); put(APP_LOGIN_RETURN_URL, dingAppInfo.getApp_return_url()); } } public static void setCloudChatInfo(CloudChatAppInfo cloudChatAppInfo){ if (cloudChatAppInfo.checkKeyWordIsNotNull(cloudChatAppInfo)){ put(CLOUD_CHAT_KEY,cloudChatAppInfo.getCloud_key()); put(CLOUD_CHAT_SECRET,cloudChatAppInfo.getCloud_secret()); put(CLOUD_NET_URI,cloudChatAppInfo.getCloud_net_uri()); put(CLOUD_NET_URI_RESERVE,cloudChatAppInfo.getCloud_net_uri_reserve()); } }ここでは、プロジェクトでカスタマイズされたデータを実際に静的カスタム コンテキスト AppContext のローカル スレッド ThreadLocal
以上がSpringBoot ApplicationListener イベント・リスニング・インターフェースの使用の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
アサシンのクリードシャドウズ:シーシェルリドルソリューション
3週間前ByDDD
Atomfallのクレーンコントロールキーカードを見つける場所
3週間前ByDDD
R.E.P.O.で節約説明した(そしてファイルを保存)
1 か月前By尊渡假赌尊渡假赌尊渡假赌

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
