बीन एक पीओजेओ (प्लेन ओल्ड जावा ऑब्जेक्ट) है, जिसे स्प्रिंग कंटेनर द्वारा प्रबंधित किया जाता है।
स्प्रिंग कंटेनर डिफ़ॉल्ट रूप से बीन का केवल एक उदाहरण बनाते हैं। यह बीन स्मृति में कैश्ड है इसलिए बीन के लिए सभी अनुरोध उसी बीन के लिए एक साझा संदर्भ वापस कर देंगे।
@ बीन एनोटेशन एक ऑब्जेक्ट देता है जो स्प्रिंग को एप्लिकेशन के संदर्भ में बीन के रूप में पंजीकृत करता है। उदाहरण बनाने के लिए विधि के अंदर तर्क जिम्मेदार है।
हम @ बीन एनोटेशन का उपयोग कब करते हैं?
जब स्वचालित कॉन्फ़िगरेशन एक विकल्प नहीं है। उदाहरण के लिए जब हम किसी तीसरे पक्ष के पुस्तकालय से घटकों को तार करना चाहते हैं, क्योंकि स्रोत कोड उपलब्ध नहीं है, इसलिए हम @Component के साथ कक्षाओं को एनोटेट नहीं कर सकते।
एक वास्तविक समय परिदृश्य यह हो सकता है कि कोई व्यक्ति अमेज़ॅन एस 3 बाल्टी से कनेक्ट करना चाहता है। क्योंकि स्रोत उपलब्ध नहीं है, उसे एक @bean बनाना होगा।
@Bean
public AmazonS3 awsS3Client() {
BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsKeyId, accessKey);
return AmazonS3ClientBuilder.standard().withRegion(Regions.fromName(region))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();
}
ऊपर दिए गए कोड का स्रोत -> https://www.devglan.com/spring-mvc/aws-s3-java
क्योंकि मैंने ऊपर @Component Annotation का उल्लेख किया है।
@Component बताता है कि एक एनोटेट वर्ग एक "घटक" है। एनोटेशन-आधारित कॉन्फ़िगरेशन और क्लास पथ स्कैनिंग का उपयोग करते समय ऐसी कक्षाओं को ऑटो-डिटेक्शन के लिए उम्मीदवार माना जाता है।
घटक एनोटेशन एक बीन के रूप में वर्ग को पंजीकृत करता है।