2010-10-02 3 views
5

Il y a 2 entrées pour un filtre Servlet, un dans web.xml et un au printemps applicationContext.xmlfiltre Spring Framework, haricot pas injecté

J'ai ajouté le filtre dans applicationContext.xml parce que je voulais injecter le haricot creditProcessor dans ça.

Le seul problème est que l'entrée dans web.xml a été récupérée par JBoss puis utilisée, donc creditProcessor est null. Dois-je utiliser delegatingFilterProxy de Spring ou similaire pour pouvoir injecter des données dans le bean ou puis-je modifier le fichier 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> 

Printemps-applicationContext.xml:

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

Répondre

11

Vous ne pouvez pas faire un ressort de filtre géré comme celui-ci. Avec votre configuration, elle est instanciée une fois au printemps et une fois par le conteneur de servlet. Au lieu de cela, utilisez DelegatingFilterProxy:

  1. déclare le proxy filtre en <filter> dans web.xml
  2. Réglez le targetBeanName init-param de la définition du filtre pour spécifier le grain qui devrait effectivement gérer le filtrage:

    <init-param> 
        <param-name>targetBeanName</param-name> 
        <param-value>creditFilter</param-value> 
    </init-param> 
    
Questions connexes