私のSpring MVCアプリにこれが見られますweb.xml
:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
なぜそこにあるのか、そしてそれが実際に必要かどうかを理解しようとしています。
私はこの説明をSpringドキュメントで見つけましたが、それは私がそれを理解するのに役立ちません:
このコンポーネントは、で定義されたサーブレットweb.xml
とSpringで定義されたコンポーネントの間の「接着剤」であることが示唆されているようapplicationContext.xml
です。
7.1 DelegatingFilterProxy
サーブレットフィルターを使用する場合は、明らかにそれらをで宣言する必要があります
web.xml
。そうしないと、サーブレットコンテナーによって無視されます。Spring Securityでは、フィルタークラスはアプリケーションコンテキストで定義されたSpring Beanでもあるため、Springの豊富な依存性注入機能とライフサイクルインターフェースを利用できます。SpringはとアプリケーションコンテキストDelegatingFilterProxy
間のリンクを提供しweb.xml
ます。DelegatingFilterProxyを使用すると、
web.xml
ファイルに次のようなものが表示されます。<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>
フィルターは実際には
DelegatingFilterProxy
であり、実際にフィルターのロジックを実装するクラスではないことに注意してください。どのようなDelegatingFilterProxy
行いは、Springアプリケーションコンテキストから取得された豆を通過フィルタのメソッドを委譲です。これにより、BeanはSpring Webアプリケーションのコンテキストライフサイクルサポートと構成の柔軟性を活用できます。Beanは実装javax.servlet.Filter
する必要があり、filter-name要素と同じ名前である必要があります。詳細については、DelegatingFilterProxyのJavadocを参照してください
それで、これをから取り出した場合web.xml
、どうなりますか?サーブレットがSpringコンテナと通信できなくなりますか?**