2016-06-03 6 views
6

मैं वसंत ढांचे के लिए नया हूँ। मैं वसंत में सिंगलटन की अवधारणा और कचरा संग्रह के बारे में उलझन में हूं। मैंने अपने प्रश्न का उत्तर पाने के लिए कई प्रश्न और लेख पढ़े हैं कि स्प्रिंग सिंगलटन का दायरा कचरा कैसे एकत्र किया जाता है। मुझे प्रोटोटाइप स्कोप कचरा संग्रह के बारे में केवल जवाब मिल गए, लेकिन सिंगलटन स्कोप के बारे में लेख मुझे स्पष्ट नहीं थे। क्या कोई इस मुद्दे पर विवरण दे सकता है।कैसे स्प्रिंग सिंगलटन स्कोप कचरा इकट्ठा किया जाता है?

+1

जीसी के लिए क्या है? –

+0

मुझे कोर जावा में सिंगलेट्स के बारे में पता है लेकिन मुझे वसंत के आंतरिक कार्यों का ज्ञान नहीं है। इसलिए मैं जानना चाहता हूं कि सिंगलटन स्कोप्ड स्प्रिंग ऑब्जेक्ट्स कचरे को – Anant666

+0

एकत्रित किया जाता है, भले ही कक्षा स्वयं जीसी के लिए उपलब्ध हो या नहीं, इसकी सामग्री एक और मामला है। –

उत्तर

6

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

कारण कारण है कि स्प्रिंग सिंगलटन ऑब्जेक्ट्स सरल जावा ऑब्जेक्ट्स से अलग हैं, यह है कि कंटेनर उनके लिए एक संदर्भ बनाए रखता है, और वे किसी भी समय आपके कोड में कहीं भी इस्तेमाल किए जा सकते हैं।

मैं आपको बताता हूं कि स्प्रिंग कंटेनर का उपयोग करके मैं आपको एक उदाहरण दूंगा। यह नहीं स्प्रिंग ऐप लिखते समय आपको इसे सामान्य रूप से कैसे करना चाहिए, यह केवल एक उदाहरण है।

@Component 
public class ExampleClass implements ApplicationContextAware { 
    /* 
    * The ApplicationContextAware interface is a special interface that allows 
    * a class to hook into Spring's Application Context. It should not be used all 
    * over the place, because Spring provides better ways to get at your beans 
    */ 
    @Override 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 
     MyBean bean = applicationContext.getBean("MyBean"); 
    } 
} 

क्या उपरोक्त कोड करता है वसंत के कहना है "मैं MyBean का उदाहरण है कि आप की खोज की है, जब कंटेनर शुरू कर दिया चाहते हैं" (Classpath Scanning)। वसंत में पहले से बनाए गए और आपके उपयोग के लिए उपलब्ध इस वर्ग का एक (प्रॉक्सी) उदाहरण होना चाहिए।

Spring Documentation

स्प्रिंग आईओसी कंटेनर से उद्देश्य यह है कि सेम परिभाषा द्वारा परिभाषित के ठीक एक उदाहरण बनाता है। यह एकल उदाहरण इस तरह के सिंगलटन बीन्स के कैश में संग्रहीत है, और उसके बाद के सभी अनुरोध और संदर्भ बीन नामक संदर्भ कैश किए गए ऑब्जेक्ट को वापस कर देते हैं।

क्योंकि बीन को एप्लिकेशन संदर्भ के अंदर कैश किया गया है, यह तब तक कचरा संग्रह के लिए योग्य नहीं है जब तक कि एप्लिकेशन संदर्भ नष्ट नहीं हो जाता।

+0

इस तरह के विस्तृत प्रतिक्रिया और दस्तावेज़ीकरण यूआरएल के लिए @ जेम्स का धन्यवाद। – Anant666

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