जवाबों:
हां, यह सही है, @Component
एक स्प्रिंग बीन और एक सिंगलटन है।
यदि वर्ग सेवा स्तर से संबंधित है, तो आप @Service
इसके बजाय एनोटेट करना चाह सकते हैं
लेकिन ध्यान रखें कि इन एनोटेशन का पता लगाने के लिए, आपको यह लाइन लगाने की आवश्यकता है applicationContext.xml
:
<context:component-scan base-package="com.yourcompany" />
एकल के बारे में - डिफ़ॉल्ट रूप से सिंगलटन दायरे में स्प्रिंग बीन्स होते हैं। केवल एक चीज जो आपके पास होनी चाहिए, वह यह है कि आपको फील्ड वेरिएबल्स में स्टेट को स्टोर नहीं करना चाहिए (उन्हें केवल निर्भरता पकड़नी चाहिए)। इस प्रकार आपका आवेदन थ्रेड-सुरक्षित होगा, और आपको हर बार बीन के नए उदाहरण की आवश्यकता नहीं होगी। दूसरे शब्दों में, आपकी सेम स्टैटिक है।
डिफ़ॉल्ट रूप से - हाँ।
हालाँकि, आप @Scope
एनोटेशन का उपयोग करके इस व्यवहार को ओवरराइड कर सकते हैं । उदाहरण के लिए:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)