概要
Servlet の Filter は SpringBoot でも使えます
環境
- macOS 26.4.1
- openjdk 26.0.1
- SpringBoot 4.0.6
- jasypt-spring-boot 4.0.4
- jackson-databind 2.21.2
- gradle 9.5.1
- VSCode 1.121.0
- MySQL 9.6.0
- Redis 8.6.3
Filter の作成
Filter クラスを継承し @Component を使用するだけで SpringBoot が自動的に読み込んでくれます
SpringBoot では web.xml を準備して明示的に Filter を定義する必要はありません
- vim src/main/java/com/example/demo/filter/LoggingFilter.java
package com.example.demo.filter;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class LoggingFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
System.out.println(">>> Request: " + req.getMethod() + " " + req.getRequestURI());
chain.doFilter(request, response);
System.out.println("<<< Response finished");
}
}
最後に
フィルタは http 全体に対する共通処理に使います
ロギングや認証、共通ヘッダの操作などにフィルタを使います
同じような機能に Interpretor がありますがこれは複数登録できる他基本的にはコントローラ単位で使用する機能になります
0 件のコメント:
コメントを投稿