e11111111111111111111
@e11111111111111111111

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Spring Framework で Filter を実装したいです。

解決したいこと

Spring Framework で Filter を実装しようとしております。
aaaFilter クラスのdoFilterメソッドが呼び出されるようにしたいです。

発生している問題・エラー

	制約の不一致: 型 aaaFilter は、型 FilterRegistrationBean<T> の制約付きパラメーター <T extends Filter> の代替として有効ではありません

該当するソースコード①の26,27行目で出ているエラーとなります。

該当するソースコード

package com.example.demo.configuration;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.example.demo.filter.aaaFilter;

@Configuration
public class FilterConfig {

	@Bean
	public FilterRegistrationBean<aaaFilter> aaaFilter() {
		FilterRegistrationBean<aaaFilter> bean = new FilterRegistrationBean<>();
		bean.setFilter(new aaaFilter());
		bean.addUrlPatterns("/");
		bean.addUrlPatterns("/hello");
		bean.setOrder(1);
		return bean;
	}
}

package com.example.demo.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class aaaFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        System.out.println("doFilter");
    	try {
	        HttpServletRequest req = (HttpServletRequest) request;
	        HttpServletResponse res = (HttpServletResponse) response;
	 
	        System.out.println("Request URI is: " + req.getRequestURI());
	        chain.doFilter(request, response);
	        System.out.println("Response Status Code is: " + res.getStatus());
    	} catch (Exception e) {
	        System.out.println("doFilter ERR");
    	}

    }

    @Override
    public void init(FilterConfig config) {
    }

    @Override
    public void destroy() {
    }
}
0

1Answer

該当するソースコード②の以下を変更したら解決しました。
【変更前】
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
【変更後】
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

0Like

Your answer might help someone💌