2012-10-20 21 views
6

वसंत में cglib प्रॉक्सी का प्रयोग का कारण बनता है:परहेज समस्याओं

एक) निर्माता

ख के दोहरे मंगलाचरण) एक विधि एक और तरीका

से लागू अवरोधन करने की अनुमति नहीं लेकिन क्यों वसंत बनाता है एक बीन और फिर एक प्रॉक्सी? क्या गतिशील रूप से कक्षा उत्पन्न करना संभव है जो निर्दिष्ट बीन वर्ग को बढ़ाता है और उसके बाद केवल एक बार कन्स्ट्रक्टर का आह्वान करता है? जो एक हल करेगा) और बी) सार्वजनिक और संरक्षित तरीकों के लिए। क्या मैं कुछ भूल रहा हूँ?

उत्तर

4

अच्छा सवाल। मुझे लगता है कि स्प्रिंग बूटस्ट्रैप्स एप्लिकेशन संदर्भ के कारण यह है: यह पहले सभी कच्चे सेम बनाता है और फिर पोस्ट प्रोसेसर लागू करता है, उदाहरण के लिए एओपी (लेनदेन समेत) जोड़ना। इस स्तरित वास्तुकला को पहले सामान्य बीन बनाने और फिर इसे लपेटने की आवश्यकता होती है। कोई तर्क दे सकता है कि यह दृष्टिकोण विरासत सिद्धांत पर संरचना का पालन करता है।

यह भी ध्यान दें कि ए) कोई समस्या नहीं होनी चाहिए। कक्षा को कन्स्ट्रक्टर में प्रारंभिक प्रदर्शन नहीं करना चाहिए, लेकिन @PostConstruct विधि में - जिसे केवल एक बार बुलाया जाता है। दूसरी ओर इस एक और मुद्दा की ओर जाता है:

ग) एक CGLIB प्रॉक्सी के साथ निर्माता इंजेक्शन उपयोग नहीं कर सकते, SPR-3150

देखना लेकिन मैं आपकी परेशानी समझता हूं। मान लें कि एकमात्र वैध वर्कअराउंड हमारे लिए पूर्ण AspectJ बुनाई है।