डिफ़ॉल्ट रूप से, वसंत BeanNameUrlHandlerMapping
, और DefaultAnnotationHandlerMapping
पंजीकृत करेगा, बिना किसी स्पष्ट कॉन्फ़िगरेशन के।
यदि आप अपना खुद का HandlerMapping
बीन्स परिभाषित करते हैं, तो डिफ़ॉल्ट वाले पंजीकृत नहीं होंगे, और आपको स्पष्ट रूप से घोषित किए गए लोग मिलेंगे।
अभी तक, बहुत अच्छा है।
समस्या तब होती है जब आप मिश्रण में <mvc:annotation-driven/>
जोड़ते हैं। यह भी अपने स्वयं के DefaultAnnotationHandlerMapping
घोषित करता है, जो डिफ़ॉल्ट को प्रतिस्थापित करता है। हालांकि, अगर आप अपना खुद का घोषित करते हैं, तो आप दो के साथ समाप्त होते हैं। चूंकि घोषणा के क्रम में उनका परामर्श लिया जाता है, इसलिए आमतौर पर इसका मतलब है कि <mvc:annotation-driven/>
द्वारा पंजीकृत एक को पहले कॉल किया जाता है, और आपके स्वयं को अनदेखा कर दिया जाता है।
यह बेहतर होगा अगर DefaultAnnotationHandlerMapping
<mvc:annotation-driven/>
द्वारा पंजीकृत डिफ़ॉल्ट की तरह काम करता है, यानी अगर स्पष्ट रूप से घोषित लोगों को प्राथमिकता दी जाती है, लेकिन ऐसा नहीं है कि उन्होंने इसे लिखा है।
मेरी वर्तमान प्राथमिकता <mvc:annotation-driven/>
का उपयोग नहीं करना है, यह बहुत भ्रमित है, और अन्य कॉन्फ़िगरेशन विकल्पों के साथ मिश्रित होने पर भी अप्रत्याशित है। यह वास्तव में कुछ भी विशेष रूप से जटिल नहीं करता है, यह आपके लिए जो सामान करता है उसे स्पष्ट रूप से जोड़ने के लिए मुश्किल या वर्बोज़ नहीं है, और अंतिम परिणाम का पालन करना आसान है।
आप भी है '
के बाद मेरी इंटरसेप्टर है वहाँ कहीं में'? – skaffman
हां, javax.validation हैंडलिंग को सक्रिय करने के लिए (और शायद अन्य चीजों का ढेर) – Bozho