Widzę to w mojej aplikacji Spring MVC web.xml:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Próbuję dowiedzieć się, dlaczego tam jest i czy jest rzeczywiście potrzebny.
Znalazłem to wyjaśnienie w dokumentacji Spring, ale nie pomaga mi to zrozumieć:
Wydaje się, że komponent ten jest „spoiwem” między serwletami zdefiniowanymi w programie web.xmla komponentami zdefiniowanymi w programie Spring applicationContext.xml.
7.1 DelegatingFilterProxy
Korzystając z filtrów serwletów, musisz oczywiście zadeklarować je w swoim
web.xml, w przeciwnym razie zostaną zignorowane przez kontener serwletów. W Spring Security klasy filtrów są również ziarnami Springa zdefiniowanymi w kontekście aplikacji, dzięki czemu mogą korzystać z bogatych narzędzi do wstrzykiwania zależności i interfejsów cyklu życia Springa. SpringDelegatingFilterProxyzapewnia łącze międzyweb.xmlkontekstem aplikacji.Podczas korzystania z DelegatingFilterProxy w
web.xmlpliku zobaczysz coś takiego :<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>Zauważ, że filtr jest w rzeczywistości a
DelegatingFilterProxy, a nie klasą, która faktycznie implementuje logikę filtru. To, coDelegatingFilterProxyrobi, to delegowanie metod filtru do komponentu bean, który jest uzyskiwany z kontekstu aplikacji Spring. Dzięki temu bean może korzystać z obsługi cyklu życia aplikacji internetowej Spring i elastyczności konfiguracji. Fasola musi być implementowanajavax.servlet.Filteri musi mieć taką samą nazwę, jak nazwa elementu filter-name. Przeczytaj Javadoc dla DelegatingFilterProxy, aby uzyskać więcej informacji
Więc jeśli to wyciągnę z siebie web.xml, co się stanie? Moje serwlety nie będą w stanie komunikować się z kontenerem Spring? **