我对过滤器和拦截器的了解是,作为 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)
谁能向我解释一下吗?