Spring Boot @WebFilter需要Servlet组件扫描

jgwigjjp  于 2023-03-08  发布在  Spring
关注(0)|答案(2)|浏览(128)

类可能被注解了@WebFilter(urlPatterns="*"),但是spring没有在请求时运行它。为什么?如果我添加@ServletComponentScan注解到应用程序类。它会工作得很好。С能以某种方式使它以不同的方式工作吗?

vptzau2j

vptzau2j1#

@ServletComponentScan
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@ServletComponentScan将修复此问题

erhoui1w

erhoui1w2#

ServletComponentScan注解对于启用扫描Servlet组件(包括Sping Boot 应用程序中的@WebServlet@WebFilter@WebListener)并将其注册到Servlet容器是必需的。
我更愿意将@WebFilter@ServletComponentScan一起使用,但还有另一种简单的方法,您可以使用@Component注册过滤器,而无需XML文件。

@Component
public class MyFilter implements Filter {
    ...
}

如果没有特定的URL模式需要匹配,可以使用@Component注解将类标记为过滤器,通过实现OncePerRequestFilter接口,可以确保过滤器的doFilter()方法在每个请求中只执行一次。

相关问题