Filtro invocar dos veces cuando se registra como Spring Bean

Quiero usar @Autowire con un Filter . Así que defino mi filtro en SecurityConfig como a continuación:

  @Override protected void configure(HttpSecurity http) throws Exception { http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); http.addFilterBefore(getA(), BasicAuthenticationFilter.class); http.csrf().disable(); } @Bean public A getA(){ return new A(); } 

Este filtro A extiende GenericFilterBean de Spring.

Obtengo la salida inferior cuando invoco el controlador, que muestra que el filtro muestra dos veces.

 filter A before filter A before mycontroller invoke filter A after filter A after 

Mi observación es que esta invocación extra invoca el contenedor Spring porque si el filtro no se registra como bean, solo recibe hits una vez. ¿Cuál es el motivo y cómo puedo solucionarlo?

Como ha observado, Spring Boot registrará automáticamente cualquier bean que sea un Filter con el contenedor de servlets. Una opción es no exponer su filtro como un frijol y solo registrarlo con Spring Security.

Si desea poder autoconectar dependencias en su Filtro, entonces necesita ser un bean. Eso significa que necesita decirle a Spring Boot que no lo registre como un filtro. Como se describe en la documentación , lo haces usando un FilterRegistrationBean :

 @Bean public FilterRegistrationBean registration(MyFilter filter) { FilterRegistrationBean registration = new FilterRegistrationBean(filter); registration.setEnabled(false); return registration; }