आप @Beanअपने स्प्रिंग फ्रेमवर्क एप्लिकेशन के संदर्भ में एक मौजूदा तृतीय-पक्ष क्लास को उपलब्ध कराने के लिए उपयोग कर सकते हैं ।
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/view/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
का उपयोग करके @Beanएनोटेशन , आप तीसरे पक्ष के वर्ग को लपेट सकते हैं (यह नहीं हो सकता है @Componentऔर यह स्प्रिंग का उपयोग नहीं कर सकता है), स्प्रिंग शॉन के रूप में। और फिर एक बार इसका उपयोग करने के बाद @Bean, यह एक सिंगलटन ऑब्जेक्ट के रूप में और आपके स्प्रिंग फ्रेमवर्क एप्लिकेशन संदर्भ में उपलब्ध है। अब आप आसानी से निर्भरता इंजेक्शन और का उपयोग करके अपने ऐप में इस बीन को आसानी से साझा / पुन: उपयोग कर सकते हैं@Autowired ।
तो सोचो @Bean एनोटेशन थर्ड-पार्टी क्लासेस के लिए एक रैपर / एडॉप्टर है। आप अपने स्प्रिंग फ्रेमवर्क एप्लिकेशन के संदर्भ में तीसरे पक्ष की कक्षाएं उपलब्ध कराना चाहते हैं।
का उपयोग करके @Beanउपरोक्त कोड , मैं स्पष्ट रूप से एक ही बीन घोषित कर रहा हूं क्योंकि विधि के अंदर, मैं स्पष्ट रूप से newकीवर्ड का उपयोग करके ऑब्जेक्ट बना रहा हूं । मैं मैन्युअल रूप से दिए गए वर्ग के सेटर तरीकों को भी कह रहा हूँ। इसलिए मैं उपसर्ग क्षेत्र का मान बदल सकता हूं। इसलिए इस मैनुअल काम को स्पष्ट निर्माण कहा जाता है। यदि मैं @Componentउसी वर्ग के लिए उपयोग करता हूं , तो स्प्रिंग कंटेनर में पंजीकृत बीन में उपसर्ग क्षेत्र के लिए डिफ़ॉल्ट मान होगा।
दूसरी ओर, जब हम किसी वर्ग के साथ एनोटेट करते हैं, तो @Componentहमें newकीवर्ड को मैन्युअल रूप से उपयोग करने की कोई आवश्यकता नहीं है । यह स्प्रिंग द्वारा स्वचालित रूप से नियंत्रित किया जाता है।