2010-10-02 16 views
5

Hay 2 entradas de un filtro de servlet, una en web.xml y uno en primavera applicationContext.xmlSpring Framework filtro, haba no inyecta

añadí el filtro en applicationContext.xml porque quería inyectar bean creditProcessor en ello.

El único problema es que la entrada en web.xml fue recogida por JBoss y luego utilizada, por lo que creditProcessor es nulo.

¿Tengo que usar Spring's delegatingFilterProxy o similar para poder inyectar cosas en el bean, o puedo modificar el 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> 

Primavera-applicationContext.xml:

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

Respuesta

11

No se puede hacer un resorte Filtro logró de esta manera. Con su configuración, se crea una instancia una vez para la primavera, y una vez para el contenedor de servlets. En su lugar, utilice DelegatingFilterProxy:

  1. declaran el proxy como un filtro de <filter> en web.xml
  2. Ajuste el targetBeanName init-param de la definición de filtro para especificar el frijol que en realidad debería manejar el filtrado:

    <init-param> 
        <param-name>targetBeanName</param-name> 
        <param-value>creditFilter</param-value> 
    </init-param> 
    
Cuestiones relacionadas