Veo esto en mi aplicación Spring MVC web.xml
:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Estoy tratando de averiguar por qué está ahí y si realmente es necesario.
Encontré esta explicación en los documentos de Spring pero no me ayuda a darle sentido:
Parece sugerir que este componente es el "pegamento" entre los servlets definidos en web.xml
y los componentes definidos en Spring applicationContext.xml
.
7.1 Delegación de filtro proxy
Cuando use filtros de servlets, obviamente debe declararlos en su
web.xml
, o serán ignorados por el contenedor de servlets. En Spring Security, las clases de filtro también son beans de Spring definidos en el contexto de la aplicación y, por lo tanto, pueden aprovechar las ricas instalaciones de inyección de dependencias y las interfaces de ciclo de vida de Spring. SpringDelegatingFilterProxy
proporciona el vínculo entreweb.xml
y el contexto de la aplicación.Al usar DelegatingFilterProxy, verá algo como esto en el
web.xml
archivo:<filter> <filter-name>myFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Observe que el filtro es en realidad a
DelegatingFilterProxy
, y no la clase que realmente implementará la lógica del filtro. Lo queDelegatingFilterProxy
hace es delegar los métodos del filtro a través de un bean que se obtiene del contexto de la aplicación Spring. Esto permite que el bean se beneficie del soporte del ciclo de vida del contexto de la aplicación web Spring y la flexibilidad de configuración. El bean debe implementarsejavax.servlet.Filter
y debe tener el mismo nombre que el del elemento filter-name. Lea el Javadoc para DelegatingFilterProxy para obtener más información
Entonces, si saco esto de mi web.xml
, ¿qué pasará? ¿Mis servlets no podrán comunicarse con el contenedor Spring? **