小编Man*_*Kyu的帖子

为什么Servlet Filter可以是Spring Bean?

我对过滤器和拦截器的了解是,作为 J2EE 规范的过滤器是 Web 服务器的一部分,而不是 Spring 框架的一部分。所以一些较旧的文章解释说,将过滤器注册为Spring Bean是不可能的,而Interceptor是可以的。但是我今天测试的结果是,Filters可以是Spring Bean,并且在Filters上注入Spring Bean也可以像Interceptor一样。(我在SpringBoot框架上测试过)

@Component
public class CustomFilterTest implements Filter {

    @Override
    public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws ServletException, IOException {
        chain.doFilter(request, response);
    }

    @Override
    public void init(final FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
    }

    @Override
    public void destroy() {
        Filter.super.destroy();
    }

}
Run Code Online (Sandbox Code Playgroud)
@RestController
@RequiredArgsConstructor
public class ProductController {

    private final CustomFilterTest customFilterTest;

    @GetMapping("/test")
    public ResponseEntity<Void> temp() {
        System.out.println(customFilterTest);
        return ResponseEntity.noContent().build();
    }
}

Run Code Online (Sandbox Code Playgroud)

谁能向我解释一下吗?

spring filter interceptor spring-boot

1
推荐指数
1
解决办法
964
查看次数

标签 统计

filter ×1

interceptor ×1

spring ×1

spring-boot ×1