2012-12-08 14 views
13

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

एक ही वसंत बीन एक ही समय में दोनों ग्राहकों के लिए कैसे उपलब्ध हो सकता है या यह दोनों सहमतिएं होने पर समस्या को हल करने की कोशिश करेगा, लेकिन दोनों अनुरोध एक ही वसंत बीन के माध्यम से दो अलग-अलग तरीकों तक पहुंचने का प्रयास करेंगे। और चूंकि वसंत बीन सिंगलटन है इसलिए नया उदाहरण नहीं बनाया जा सकता है। इस मामले में यह कैसे काम करेगा?

उत्तर

7

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

यह भी देखें: सेम एक सिंगलटन है

4

है, तो आप एक ही वसंत उदाहरण किसी भी सूत्र में दे देंगे। यह बीन थ्रेड-सुरक्षित बनाने के लिए आप पर निर्भर है। चूंकि यह एक सिंगलटन है, इसलिए आप उस वर्ग को स्टेटलेस बनाने से सबसे अच्छा होगा।

4

जैसा कि अन्य ने पहले ही सुझाव दिया है, वसंत "सिंगलटन" बीन्स के मामले में सभी धागे को एक ही उदाहरण प्रदान करने जा रहा है।

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

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