A Bean เป็น POJO (วัตถุ Java เก่าแบบธรรมดา) ซึ่งจัดการโดยสปริงคอนเทนเนอร์
สปริงคอนเทนเนอร์สร้างเพียงหนึ่งอินสแตนซ์ของ bean โดยค่าเริ่มต้น bean นี้ถูกแคชในหน่วยความจำดังนั้นการร้องขอทั้งหมดสำหรับ bean จะส่งคืนการอ้างอิงที่แชร์ไปยัง bean เดียวกัน
คำอธิบายประกอบ @Bean ส่งคืนวัตถุที่สปริงรีจิสเตอร์เป็น bean ในบริบทของแอปพลิเคชัน ตรรกะภายในเมธอดมีหน้าที่สร้างอินสแตนซ์
เราจะใช้คำอธิบายประกอบ @Bean เมื่อใด
เมื่อการกำหนดค่าอัตโนมัติไม่ใช่ตัวเลือก ตัวอย่างเช่นเมื่อเราต้องการวางสายส่วนประกอบจากไลบรารีบุคคลที่สามเนื่องจากไม่มีซอร์สโค้ดดังนั้นเราจึงไม่สามารถใส่คำอธิบายประกอบคลาสด้วย @Component
สถานการณ์ตามเวลาจริงอาจเป็นได้ว่ามีคนต้องการเชื่อมต่อกับที่ฝากข้อมูล Amazon S3 เนื่องจากแหล่งไม่พร้อมใช้งานเขาจะต้องสร้าง @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 ระบุว่าคลาสที่ทำหมายเหตุประกอบไว้เป็น "component" คลาสดังกล่าวถือเป็นตัวเลือกสำหรับการตรวจจับอัตโนมัติเมื่อใช้การกำหนดค่าตามหมายเหตุประกอบและการสแกนพา ธ คลาส
การเพิ่มความคิดเห็นประกอบลงทะเบียนคลาสเป็น bean เดียว