स्प्रिंग फ्रेमवर्क के साथ एओपी
स्प्रिंग फ्रेमवर्क के प्रमुख घटकों में से एक है Aspect oriented programming (AOP)ढांचा। पहलू-ओरिएंटेड प्रोग्रामिंग अलग-अलग हिस्सों में प्रोग्राम लॉजिक को तोड़ने के लिए मजबूर करता है जिसे तथाकथित चिंता कहा जाता है। किसी अनुप्रयोग के कई बिंदुओं को जोड़ने वाले कार्य कहलाते हैंcross-cutting concernsऔर इन क्रॉस-कटिंग चिंताओं को वैचारिक रूप से एप्लिकेशन के व्यावसायिक तर्क से अलग किया जाता है। लॉगिंग, ऑडिटिंग, घोषणात्मक लेन-देन, सुरक्षा, कैशिंग आदि जैसे पहलुओं के विभिन्न सामान्य अच्छे उदाहरण हैं।
OOP में प्रतिरूपकता की प्रमुख इकाई वर्ग है, जबकि AOP में प्रतिरूपकता की इकाई पहलू है। निर्भरता इंजेक्शन आपको एक दूसरे से अपने आवेदन की वस्तुओं को कम करने में मदद करता है और एओपी आपको प्रभावित होने वाली वस्तुओं से क्रॉस-कटिंग चिंताओं को कम करने में मदद करता है। AOP प्रोग्रामिंग भाषाओं जैसे Perl, .NET, Java और अन्य में ट्रिगर की तरह है।
स्प्रिंग एओपी मॉड्यूल किसी एप्लिकेशन को इंटरसेप्ट करने के लिए इंटरसेप्टर्स प्रदान करता है। उदाहरण के लिए, जब किसी विधि को निष्पादित किया जाता है, तो आप विधि के निष्पादन से पहले या बाद में अतिरिक्त कार्यक्षमता जोड़ सकते हैं।
एओपी शब्दावली
इससे पहले कि हम एओपी के साथ काम करना शुरू करें, आइए हम एओपी अवधारणाओं और शब्दावली से परिचित हों। ये शब्द स्प्रिंग के लिए विशिष्ट नहीं हैं, बल्कि वे एओपी से संबंधित हैं।
अनु क्रमांक | शर्तें और विवरण |
---|---|
1 | Aspect यह एक मॉड्यूल है जिसमें एपीआई का एक सेट है जो क्रॉस-कटिंग आवश्यकताओं को प्रदान करता है। उदाहरण के लिए, एक लॉगिंग मॉड्यूल को लॉगिंग के लिए एओपी पहलू कहा जाएगा। एक आवेदन में आवश्यकता के आधार पर किसी भी संख्या में पहलू हो सकते हैं। |
2 | Join point यह आपके एप्लिकेशन में एक बिंदु को दर्शाता है जहां आप AOP पहलू में प्लग-इन कर सकते हैं। आप यह भी कह सकते हैं, यह आवेदन में वास्तविक स्थान है जहां स्प्रिंग एओपी ढांचे का उपयोग करके एक कार्रवाई की जाएगी। |
3 | Advice यह विधि निष्पादन से पहले या बाद में की जाने वाली वास्तविक क्रिया है। यह कोड का एक वास्तविक टुकड़ा है जो स्प्रिंग एओपी ढांचे द्वारा कार्यक्रम के निष्पादन के दौरान लगाया जाता है। |
4 | Pointcut यह एक या एक से अधिक जुड़ने वाले बिंदुओं का एक समूह है जहां एक सलाह पर अमल किया जाना चाहिए। आप अभिव्यक्ति या पैटर्न का उपयोग करके बिंदु निर्दिष्ट कर सकते हैं जैसा कि हम अपने एओपी उदाहरणों में देखेंगे। |
5 | Introduction एक परिचय आपको मौजूदा कक्षाओं में नए तरीकों या विशेषताओं को जोड़ने की अनुमति देता है। |
6 | Target object किसी एक या अधिक पहलुओं द्वारा दी जाने वाली वस्तु। यह वस्तु हमेशा एक अनुमानित वस्तु होगी, जिसे सलाहित वस्तु भी कहा जाता है। |
7 | Weaving बुनाई एक सलाह दी गई वस्तु बनाने के लिए अन्य एप्लिकेशन प्रकारों या वस्तुओं के साथ पहलुओं को जोड़ने की प्रक्रिया है। यह संकलन समय, लोड समय, या रनटाइम पर किया जा सकता है। |
सलाह के प्रकार
वसंत के पहलू पांच प्रकार की सलाह के साथ काम कर सकते हैं जो निम्नानुसार हैं -
अनु क्रमांक | सलाह और विवरण |
---|---|
1 | before विधि निष्पादन से पहले सलाह चलाएँ। |
2 | after विधि निष्पादन के बाद सलाह चलाएँ, चाहे उसका परिणाम कुछ भी हो। |
3 | after-returning विधि निष्पादन के बाद सलाह चलाएँ, यदि विधि सफलतापूर्वक पूर्ण होती है। |
4 | after-throwing विधि निष्पादन के बाद सलाह तभी चलाएँ जब कोई अपवाद छोड़ कर विधि बाहर निकलती है। |
5 | around सलाह दी गई विधि से पहले और बाद में सलाह चलाएँ। |
कस्टम पहलू कार्यान्वयन
वसंत समर्थन करता है @AspectJ annotation style दृष्टिकोण और schema-basedकस्टम पहलुओं को लागू करने के लिए दृष्टिकोण। इन दो दृष्टिकोणों को निम्नलिखित वर्गों में विस्तार से बताया गया है।
अनु क्रमांक | दृष्टिकोण और विवरण |
---|---|
1 | XML स्कीमा आधारित एक्सएमएल आधारित कॉन्फ़िगरेशन के साथ नियमित कक्षाओं का उपयोग करके पहलुओं को लागू किया जाता है। |
2 | @AspectJ आधारित @AspectJ जावा 5 एनोटेशन के साथ नियमित जावा कक्षाओं के रूप में पहलुओं को घोषित करने की शैली को संदर्भित करता है। |