この記事の内容は、SpringBoot インターセプターによる Bean の注入方法 (コード例) の紹介です。必要な方は参考にしていただければ幸いです。
ビジネス上のニーズにより、Redis キャッシュをインターセプターで操作する必要があります。コントローラーとサービス層の構成によれば、キャッシュを注入できないことが判明し、常に null ポインター例外が報告されます。
解決策
@Configuration public class MyWebAppConfigurer extends WebMvcConfigurerAdapter { /** * 将自定义拦截器作为Bean写入配置 * @return */ @Bean public SysInterceptor sysInterceptor() { return new SysInterceptor(); } /** * 对拦截器注册 */ @Override public void addInterceptors(InterceptorRegistry registry) { String[] patterns = new String[] {"/swagger-resources/**"}; registry.addInterceptor(sysInterceptor()) .addPathPatterns("/**") .excludePathPatterns(patterns); super.addInterceptors(registry); } }
インターセプタ:
public class SysInterceptor implements HandlerInterceptor { private static final Logger logger = LoggerFactory.getLogger(SysInterceptor.class); @Autowired private RedisTemplate<String, String> redisTemplate; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //业务逻辑 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
クエリ理由
インターセプタはBean内で実行されます。この問題は初期化前に発生します。 web.xml の各要素の実行順序は context-param-->listener-->filter-->servlet; となっており、Spring MVC ではインターセプタが設定されています。サーブレット リクエストの実行プロセスは次のようになります。 context-param-->listener-->filter-->servlet-->interceptor。なぜインターセプタがサーブレットの実行後にあるのかというと、インターセプタ自体が内部にあるためです。サーブレット。
概念
サーブレット: サーブレットはサーバー側で実行される Java アプリケーションであり、プラットフォームやプロトコルに依存せず、次のことができます。 Web ページを動的に生成する場合、クライアントのリクエストとサーバーの応答の間の中間層で機能します。
filter: フィルターは、HTTP リクエスト、レスポンス、およびヘッダー情報を変換するために使用できる再利用可能なコード フラグメントです。サーブレットとは異なり、フィルターはリクエストやレスポンスを生成できません。特定のリソースに対するリクエストを変更するか、特定のリソースからのレスポンスを変更するだけです。
listener: リスナー、文字通り、リスナーは主にリスニングに使用されることがわかります。リスナーを通じて、Web サーバーの実行アクションを監視し、その要件に従って応答できます。平たく言えば、アプリケーション、セッション、リクエストのオブジェクトが作成および破棄されるとき、または属性が追加、変更、または削除されるときに、コードを自動的に実行する機能コンポーネントです。
インターセプター: インターセプターは、フィルターのより詳細な適用です。サービス メソッドの前後だけでなく、他のメソッドのインターセプターの前後にも適用できます。
以上がSpringBootインターセプタによるBean注入方法の紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。
