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.xml
und 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'sDelegatingFilterProxy
stellt die Verbindung zwischenweb.xml
und dem Anwendungskontext her.Wenn Sie DelegatingFilterProxy verwenden, wird in der
web.xml
Datei 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
DelegatingFilterProxy
ist und nicht die Klasse, die die Logik des Filters tatsächlich implementiert. SieDelegatingFilterProxy
delegieren 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.Filter
und 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? **