SSH構造のWebアプリケーションでは、spring管理のインスタンスをカスタムフィルタFilterで取得する方法
最近私はプロジェクトの中で1つの问题に出会って、1つのフィルターFilterをカスタマイズして、私はフィルターの中でサービスを取得して、それによっていくつかの业务の操作を行いたいと思って、しかし、私はどうしてもspring管理のサービスを得ることができなくて、それからネット上で长い间探して、ついにこの问题を解决して、この间违いは私がwebにいます.xml内の構成はサーブレットフィルタに従って構成されており、フィルタの初期化時にspringのインスタンスがまだ初期化されていないためspringのインスタンスを得ることができず、後にネット上の案を参考にDelegatingFilterProxyを用いてこの問題を解決した.
DelegatingFilterProxyはservlet filterのエージェントです.このクラスの利点は主にSpringコンテナでservlet filterのライフサイクルを管理することです.また、filterにSpringコンテナのインスタンスが必要な場合はspringで直接入力できます.また、いくつかのプロファイルを読み込むという便利な操作はSpringで構成できます.
DelegatingFilterProxyの使い方、
まずweb.xmlでの構成:
次にSpringのプロファイルで、特定のFilterクラスのインスタンスを構成します.
注意:Springで構成されているbeanのnameはwebとします.xmlのは一致する必要があります
またはDelegatingFilterProxyのfilter構成で初期パラメータ:targetBeanNameを構成し、Spring構成のbeannameに対応します.
Filterの元のinit、destroyメソッドの呼び出しを保持する場合は、初期化パラメータtargetFilterLifecycleをtrueに設定する必要があります.このパラメータはfalseがデフォルトです.
DelegatingFilterProxyはservlet filterのエージェントです.このクラスの利点は主にSpringコンテナでservlet filterのライフサイクルを管理することです.また、filterにSpringコンテナのインスタンスが必要な場合はspringで直接入力できます.また、いくつかのプロファイルを読み込むという便利な操作はSpringで構成できます.
DelegatingFilterProxyの使い方、
まずweb.xmlでの構成:
<filter>
<filter-name>urlFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>urlFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
次にSpringのプロファイルで、特定のFilterクラスのインスタンスを構成します.
<bean id="urlFilter" class="com.nxt.count.filter.UrlFilter">
<property name="visitLogService" ref="visitLogService"/>
</bean>
注意:Springで構成されているbeanのnameはwebとします.xmlの
またはDelegatingFilterProxyのfilter構成で初期パラメータ:targetBeanNameを構成し、Spring構成のbeannameに対応します.
Filterの元のinit、destroyメソッドの呼び出しを保持する場合は、初期化パラメータtargetFilterLifecycleをtrueに設定する必要があります.このパラメータはfalseがデフォルトです.