Vedo questo nella mia app Spring MVC web.xml:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Sto cercando di capire perché è lì e se è effettivamente necessario.
Ho trovato questa spiegazione nei documenti di primavera ma non mi aiuta a capirla:
Sembra suggerire che questo componente sia il "collante" tra i servlet definiti in web.xmle i componenti definiti in Spring applicationContext.xml.
7.1 DelegatingFilterProxy
Quando si utilizzano filtri servlet, è ovviamente necessario dichiararli nel proprio
web.xml, altrimenti verranno ignorati dal contenitore servlet. In Spring Security, le classi di filtro sono anche bean Spring definiti nel contesto dell'applicazione e quindi in grado di sfruttare le ricche funzionalità di inserimento delle dipendenze e le interfacce del ciclo di vita di Spring. Spring'sDelegatingFilterProxyfornisce il collegamento traweb.xmle il contesto dell'applicazione.Quando usi DelegatingFilterProxy, vedrai qualcosa di simile nel
web.xmlfile:<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>Si noti che il filtro è effettivamente a
DelegatingFilterProxye non la classe che implementerà effettivamente la logica del filtro. Ciò cheDelegatingFilterProxyfa è delegare i metodi del filtro a un bean ottenuto dal contesto dell'applicazione Spring. Ciò consente al bean di beneficiare del supporto del ciclo di vita del contesto dell'applicazione Web Spring e della flessibilità di configurazione. Il bean deve essere implementatojavax.servlet.Filtere deve avere lo stesso nome di quello nell'elemento nome-filtro. Leggere Javadoc per DelegatingFilterProxy per ulteriori informazioni
Quindi, se lo tolgo dal mio web.xml, cosa succederà? I miei servlet non saranno in grado di comunicare con il contenitore Spring? **