2010-10-02 13 views
5

एक सर्वलेट फ़िल्टर के लिए 2 प्रविष्टियों, web.xml में एक और एक स्प्रिंग applicationContext.xml मेंस्प्रिंग फ्रेमवर्क फिल्टर, सेम इंजेक्शन नहीं

मैं क्योंकि मैं creditProcessor सेम इंजेक्षन करना चाहता था applicationContext.xml में फिल्टर नहीं जोड़ी गई है इसे में।

एकमात्र समस्या यह है कि वेब.एक्सएमएल में प्रविष्टि जेबॉस द्वारा उठाई गई और फिर इसका उपयोग किया गया, इसलिए क्रेडिट प्रोसेसर शून्य है।

क्या मुझे वसंत के प्रतिनिधि को फ़िल्टर करना है या इसी तरह से मैं बीन में सामान इंजेक्ट कर सकता हूं, या क्या मैं 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> 

वसंत-applicationContext.xml:

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

उत्तर

11

आप एक फ़िल्टर वसंत इस तरह कामयाब नहीं कर सकता। आपके सेटअप के साथ इसे वसंत द्वारा एक बार तत्काल किया जाता है, और एक बार सर्वलेट कंटेनर द्वारा। इसके बजाय, DelegatingFilterProxy का उपयोग करें:

:

  1. web.xml
  2. सेम है कि वास्तव में छानने संभाल निर्दिष्ट करने के लिए फिल्टर परिभाषा के targetBeanName init-परम सेट में एक <filter> के रूप में फिल्टर प्रॉक्सी घोषित

    <init-param> 
        <param-name>targetBeanName</param-name> 
        <param-value>creditFilter</param-value> 
    </init-param> 
    
संबंधित मुद्दे