9

サーブレット フィルターにスプリング インジェクションを実行しようとしています。フィルターは、参照されている jar ファイルの一部です。それで。インターセプターとして変更することはできません。私のプラグインプロジェクトの web.xml で

<filter>
    <filter-name>CustomFilter</filter-name>    
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>    
    <init-param>    
        <param-name>someinitparam</param-name>    
        <param-value>value to it</param-value>    
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CustomFilter</filter-name>
    <url-pattern>/mywebservices/*</url-pattern>
</filter-mapping>

spring.xml では、このように使用します

<bean id="CustomFilter" class="com.abc.CustomFilter"></bean>

spring.xml ですでに構成されているフィルターがいくつかあります。

<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
        <value>
            CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /mywebservices/*=some existing filters
        </value>              
    </property>
</bean>

既に web.xml で URL パターンを指定しているので、filterChainProxy に再度追加する必要がありますか?

/mywebservices/**=CustomFilter, some existing filters

それはうまくいきますか?

提案してください。

4

2 に答える 2

14

web.xml で行ったようにフィルターを構成できます

<filter>
   <filter-name>CustomFilter</filter-name>
   <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
   <filter-name>CustomFilter</filter-name>
   <url-pattern>/mywebservices/*</url-pattern>
</filter-mapping>

次に、spring.xml にプロパティを挿入します。

<bean id="CustomFilter" class="com.abc.CustomFilter">
   <property name="someParameter">
      <value>some value</value>
   </property>
</bean>
于 2013-02-08T08:06:46.400 に答える
0

スプリング コンテキストの外に Bean を注入することはできず、サーブレット フィルターはスプリング コンテキストの外にあると思います。コンテキスト内にフィルターが必要な場合は、Spring Web インターセプターを使用することをお勧めします。これらのインターセプターは Spring コンテキスト内にあり、これらのインターセプターで Spring コンテナー機能を活用できます。

于 2013-02-08T05:39:49.650 に答える