I am trying to learn with Spring Boot and I am now at the filters.
I have defined the following filter which is not called. I tested it first with debug and a breakpoint and then with hard debug (println and output).
Do I still need to register the filter or have I forgotten something?
package com.example.demo.filter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import java.io.IOException;
@Component
public class CustumRequestFilter implements Filter
{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
// System.out.println("Hello Filter");
((HttpServletResponse) request).setHeader("X-TEST-REQUEST", "FOOBAR-REQUEST");
((HttpServletResponse) response).setHeader("X-TEST-RESPONSE", "FOOBAR-RESPONSE");
// response.getOutputStream().write("Puff paff".getBytes());
chain.doFilter(request, response);
}
}
Use FilterRegistrationBean.
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.example.demo.filter.CustumRequestFilter;
@Configuration
public class FilterConfiguration {
@Bean
public FilterRegistrationBean<CustumRequestFilter> filter() {
FilterRegistrationBean<CustumRequestFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new CustumRequestFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}