2026年6月2日火曜日

SpringBoot で Filter を使う方法

SpringBoot で Filter を使う方法

概要

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 件のコメント:

コメントを投稿