Фильтр Spring Framework, бин не вводится - PullRequest
6 голосов
/ 03 октября 2010

Есть 2 записи для фильтра сервлетов, одна в web.xml и одна в Spring applicationContext.xml

Я добавил фильтр в applicationContext.xml, потому что хотел внедрить в него bean-компонент creditProcessor.

Единственная проблема заключается в том, что запись в web.xml была получена JBoss и затем использована, поэтому creditProcessor имеет значение null.

Нужно ли использовать Spring DelegatingFilterProxy или подобное, чтобы я мог вводить материалы вbean-компонент, или я могу настроить web.xml?

web.xml:

<filter>
    <filter-name>CreditFilter</filter-name>
    <filter-class>credit.filter.CreditFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>CreditFilter</filter-name>
    <url-pattern>/coverage/*</url-pattern>        
</filter-mapping>

Spring-applicationContext.xml:

<bean id="creditFilter" class="credit.filter.CreditFilter" >
      <property name="creditProcessor" ref="creditProcessor"/>
</bean>

1 Ответ

12 голосов
/ 03 октября 2010

Вы не можете сделать пружину фильтра управляемой таким образом.С вашей настройкой он создается один раз весной, а один раз контейнером сервлета.Вместо этого используйте DelegatingFilterProxy:

  1. , чтобы объявить прокси фильтра как <filter> в web.xml
  2. Установить инициализацию targetBeanName-параметр определения фильтра для указания компонента, который должен фактически обрабатывать фильтрацию:

    <init-param>
        <param-name>targetBeanName</param-name>
        <param-value>creditFilter</param-value>
    </init-param>
    
...