ฉันอยากรู้ว่าการฉีดสปริงจัดการกับวิธีการโทรด้วย@Beanคำอธิบายประกอบอย่างไร ถ้าฉันใส่@Beanคำอธิบายประกอบในเมธอดและส่งคืนอินสแตนซ์ฉันเข้าใจว่าสิ่งนั้นบอกให้สปริงสร้าง bean โดยเรียกใช้เมธอดและรับอินสแตนซ์ที่ส่งคืน อย่างไรก็ตามบางครั้งถั่วนั้นจะต้องใช้ในการต่อสายถั่วอื่นหรือตั้งค่ารหัสอื่น วิธีปกติจะทำคือเรียกใช้@Beanวิธีการใส่คำอธิบายประกอบเพื่อรับอินสแตนซ์ คำถามของฉันคือเหตุใดสิ่งนี้จึงไม่ทำให้มีหลายอินสแตนซ์ของถั่วลอยอยู่รอบ ๆ ?
ตัวอย่างเช่นดูรหัสด้านล่าง (นำมาจากคำถามอื่น) entryPoint()วิธีการที่กำกับด้วย@Beanดังนั้นฉันจะคิดฤดูใบไม้ผลิที่จะสร้างตัวอย่างใหม่ของBasicAuthenticationEntryPointเป็นถั่ว จากนั้นเราจะเรียกentryPoint()อีกครั้งในการกำหนดค่าบล็อก แต่ดูเหมือนว่าentryPoint()จะส่งคืนอินสแตนซ์ bean และไม่ได้ถูกเรียกหลายครั้ง (ฉันพยายามบันทึกและได้รับรายการบันทึกเพียงรายการเดียว) เป็นไปได้ว่าเราสามารถเรียกใช้entryPoint()หลายครั้งในส่วนอื่น ๆ ของการกำหนดค่าและเราจะได้รับอินสแตนซ์เดียวกันเสมอ ความเข้าใจของฉันถูกต้องหรือไม่? ฤดูใบไม้ผลิมีการเขียนวิธีการใหม่ที่มีคำอธิบายประกอบด้วยมนต์ขลัง@Beanหรือไม่?
@Bean
public BasicAuthenticationEntryPoint entryPoint() {
BasicAuthenticationEntryPoint basicAuthEntryPoint = new BasicAuthenticationEntryPoint();
basicAuthEntryPoint.setRealmName("My Realm");
return basicAuthEntryPoint;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.exceptionHandling()
.authenticationEntryPoint(entryPoint())
.and()
.authorizeUrls()
.anyRequest().authenticated()
.and()
.httpBasic();
}
@Beanและ@Primary)