2011-03-11 16 views
11

मैंने इस विषय पर कई बार वसंत दस्तावेज़ पढ़े, लेकिन कुछ चीजें अभी भी मेरे लिए अस्पष्ट हैं। प्रलेखन राज्यों:स्प्रिंग सत्र-स्कोप्ड बीन्स प्रोटोटाइप सेम में निर्भरता के रूप में?

आप (उदाहरण के लिए) सुई एक HTTP अनुरोध एक और सेम में सेम scoped चाहते हैं, आप scoped सेम के स्थान पर एक AOP प्रॉक्सी इंजेक्षन चाहिए। यही है, आपको एक प्रॉक्सी ऑब्जेक्ट इंजेक्ट करने की आवश्यकता है जो स्कॉप्ड ऑब्जेक्ट के समान सार्वजनिक इंटरफ़ेस को उजागर करता है लेकिन यह वास्तविक दायरे से वास्तविक, लक्षित ऑब्जेक्ट को भी पुनर्प्राप्त कर सकता है (उदाहरण के लिए, एक HTTP अनुरोध) और असली ऑब्जेक्ट पर प्रतिनिधि विधि कॉल ।

कॉन्फ़िग उदाहरण इस प्रकार है:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"> 
    <aop:scoped-proxy/> 
</bean> 

<bean id="userManager" class="com.foo.UserManager"> 
    <property name="userPreferences" ref="userPreferences"/> 
</bean> 

यहाँ, userManager सेम सिंगलटन के रूप में स्कोप वाला। तो, मुझे आश्चर्य है कि क्या यह प्रॉक्सी चीज केवल सिंगलटन-स्कोप्ड बीन्स पर लागू होती है, यानी, यदि आप सिंगलटन बीन्स में वेब-स्कोप्ड बीन इंजेक्ट करना चाहते हैं, या यह प्रोटोटाइप सेम पर भी लागू होता है? उदाहरण के लिए, यदि उपयोगकर्ता प्रबंधक प्रोटोटाइप के रूप में स्कॉप्ड किया गया था?

मैं यह पूछ रहा हूं क्योंकि मैंने कुछ कोड देखा है जो बिना किसी प्रॉक्सी के प्रोटोटाइप में सत्र-स्कोप्ड बीन्स इंजेक्ट करता है, लेकिन मुझे यकीन नहीं है कि यह सही है ... विशेष रूप से, वे कुछ वेब में डीएओ बीन्स थे -एप, सत्र के रूप में स्कॉप्ड किया गया, और उन्हें बहु-उपयोगकर्ता वातावरण के लिए प्रोटोटाइप-स्कोप्ड नियंत्रकों में इंजेक्शन दिया गया था। क्या यह सही रास्ता है? वेब-एप पर्यावरण में सामान्य रूप से डीएओ/सेवा सेम कैसे होना चाहिए?

किसी भी विचार की सराहना की जाएगी।

उत्तर

22

आप हमेशा नाबालिग दायरे (जैसे एक सत्र-स्कोप्ड बीन) के एक बीन में व्यापक क्षेत्र (उदाहरण के लिए एक सिंगलटन) का एक बीन इंजेक्ट कर सकते हैं, लेकिन इसके आसपास दूसरी तरफ, आपको स्कॉप्ड-प्रॉक्सी की आवश्यकता होती है।

तो प्रोटोटाइप-स्कोप्ड बीन में सत्र-स्कोप्ड बीन इंजेक्शन करने का आपका उदाहरण ठीक है, क्योंकि प्रोटोटाइप-स्कोप से सत्र-स्कोप "व्यापक" है।

यदि आपको यह गलत लगता है, तो वसंत आपको बताएगा। अगर यह शिकायत नहीं करता है, तो आपको इसकी आवश्यकता नहीं है।

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