Ich sehe dies in meinen Spring MVC-Apps web.xml:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
Ich versuche herauszufinden, warum es da ist und ob es tatsächlich gebraucht wird.
Ich habe diese Erklärung in den Spring-Dokumenten gefunden, aber es hilft mir nicht, sie zu verstehen:
Es scheint darauf hinzudeuten, dass diese Komponente der "Klebstoff" zwischen den in definierten Servlets web.xmlund den in der Feder definierten Komponenten ist applicationContext.xml.
7.1 DelegatingFilterProxy
Wenn Sie Servlet-Filter verwenden, müssen Sie diese natürlich in Ihrem deklarieren
web.xml, sonst werden sie vom Servlet-Container ignoriert. In Spring Security sind die Filterklassen auch Spring Beans, die im Anwendungskontext definiert sind und somit die umfangreichen Funktionen zur Abhängigkeitsinjektion und die Lebenszyklusschnittstellen von Spring nutzen können. Spring'sDelegatingFilterProxystellt die Verbindung zwischenweb.xmlund dem Anwendungskontext her.Wenn Sie DelegatingFilterProxy verwenden, wird in der
web.xmlDatei Folgendes angezeigt:<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>Beachten Sie, dass der Filter tatsächlich eine
DelegatingFilterProxyist und nicht die Klasse, die die Logik des Filters tatsächlich implementiert. SieDelegatingFilterProxydelegieren die Methoden des Filters an eine Bean, die aus dem Spring-Anwendungskontext abgerufen wird. Auf diese Weise kann die Bean von der Unterstützung des Lebenszyklus des Spring-Webanwendungskontexts und der Flexibilität bei der Konfiguration profitieren. Die Bean muss implementiert seinjavax.servlet.Filterund denselben Namen wie das Element filter-name haben. Weitere Informationen finden Sie im Javadoc for DelegatingFilterProxy
Also, wenn ich das aus meinem herausnehme web.xml, was wird passieren? Meine Servlets können nicht mit dem Spring-Container kommunizieren? **