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.xml
e 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'sDelegatingFilterProxy
fornisce il collegamento traweb.xml
e il contesto dell'applicazione.Quando usi DelegatingFilterProxy, vedrai qualcosa di simile nel
web.xml
file:<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
DelegatingFilterProxy
e non la classe che implementerà effettivamente la logica del filtro. Ciò cheDelegatingFilterProxy
fa è 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.Filter
e 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? **