2012-02-20 14 views
7

मुझे समझ में नहीं आता कि @with एनोटेशन क्या करता है।@with annotation क्या करता है? (प्ले फ्रेमवर्क)

प्ले ढांचे साइट में

, यह लिखा है:

हम नियंत्रकों @With एनोटेशन का उपयोग कर इसी इंटरसेप्टर

यह रूप में ही है आह्वान करने के लिए प्ले बताने के लिए टिप्पणी कर सकते हैं विरासत? क्या यह दिए गए वर्ग पैरामीटर से पहले @ आमंत्रित करेगा? यह वास्तव में क्या करता है ?

उत्तर

7

सबसे अच्छा तरीका मैं इसका वर्णन कर सकता हूं, यह है कि यह आपको अपने अवरोधकों के लिए अपने नियंत्रक स्तर पर एकाधिक विरासत देता है। इंटरसेप्टर @Before, @After एनोटेशन हैं।

इसलिए

  • एक नियंत्रक कि अपने सुरक्षित क्षेत्र के साथ निपटा @Before एनोटेशन
  • एक नियंत्रक कि @Before

आप कर सकते थे का उपयोग करके साझा कार्यों के लिए अपने स्थिर डेटा इंजेक्शन लगाने के साथ निपटा परिभाषित निर्धारित कर सकते हैं फिर एक नियंत्रक या नियंत्रक को परिभाषित करें जिसमें आपके सभी कार्य शामिल हैं, और ऊपर वर्णित दो नियंत्रकों का उपयोग करने के लिए @With एनोटेशन का उपयोग करें। इसका मतलब है कि आप अपने कोड को साफ से अलग कर सकते हैं, और @Before एनोटेशन निष्पादित करने के लिए विरासत पर भरोसा नहीं करना है।

6

मान लीजिए आप 2 नियंत्रकों है:

  • A@Before या अन्य नियंत्रक कार्रवाई इंजेक्शन टिप्पणियां हैं,
  • BA में परिभाषित @With(A.class)

सभी उन इंजेक्शन कार्यों प्रभावी हो जाएगा के साथ एनोटेट हो B की क्रिया विधियों को कॉल करते समय।

यह विरासत है। हालांकि विरासत के साथ आप अधिकतम एक वर्ग में विस्तार कर सकते हैं। लेकिन आप @With({A.class, Z.class, ...})

+0

यदि मैं आपको सही ढंग से समझता हूं, बी कक्षा में मैं किसी वर्ग (अंतर्निहित) में किसी भी विधि को कॉल कर सकता हूं? – james

+0

नहीं, बस इंटरसेप्टर ((पर) पहले, (पर) बाद में, (एटी) अंतिम आदि) काम करेंगे –

संबंधित मुद्दे