ฉันกำลังศึกษาสำหรับการรับรองฤดูใบไม้ผลิแกนผมมีข้อสงสัยบางอย่างเกี่ยวกับฤดูใบไม้ผลิจัดการถั่ววงจรชีวิตและโดยเฉพาะอย่างยิ่งเกี่ยวกับในการประมวลผลถั่วโพสต์
ดังนั้นฉันจึงมีสคีมานี้:
ค่อนข้างชัดเจนสำหรับฉันว่ามันหมายถึงอะไร:
ขั้นตอนต่อไปนี้เกิดขึ้นในเฟสLoad Bean Definitions :
@Configurationเรียนมีการประมวลผลและ / หรือ@Componentsจะสแกนหาและ / หรือไฟล์ XML ที่มีการแยกวิเคราะห์
เพิ่มคำจำกัดความของ Bean ใน BeanFactory (แต่ละรายการจัดทำดัชนีภายใต้ id)
ถั่วBeanFactoryPostProcessorพิเศษที่เรียกใช้มันสามารถแก้ไขนิยามของ bean ใด ๆ (ตัวอย่างเช่นการแทนที่ค่าคุณสมบัติตัวยึด)
จากนั้นขั้นตอนต่อไปนี้จะเกิดขึ้นในขั้นตอนการสร้างถั่ว :
ถั่วแต่ละอันจะถูกสร้างอินสแตนซ์อย่างกระตือรือร้นตามค่าเริ่มต้น (สร้างขึ้นตามลำดับที่ถูกต้องพร้อมกับการเติมการอ้างอิง)
หลังจากการฉีดพึ่งพาถั่วแต่ละชนิดจะต้องผ่านขั้นตอนหลังการประมวลผลซึ่งอาจเกิดการกำหนดค่าและการเริ่มต้นเพิ่มเติม
หลังจากการประมวลผลภายหลัง bean จะเริ่มต้นอย่างสมบูรณ์และพร้อมสำหรับการใช้งาน (ติดตามโดย id จนกว่าบริบทจะถูกทำลาย)
โอเคนี่ค่อนข้างชัดเจนสำหรับฉันและฉันก็รู้ด้วยว่ามีโปรเซสเซอร์ bean post สองประเภทได้แก่ :
Initializers:เริ่มต้น bean หากได้รับคำแนะนำ (เช่น @PostConstruct)
และส่วนที่เหลือทั้งหมด:ที่อนุญาตให้มีการกำหนดค่าเพิ่มเติมและอาจทำงานก่อนหรือหลังขั้นตอนเริ่มต้น
และฉันโพสต์สไลด์นี้:
ดังนั้นมันจึงชัดเจนมากสำหรับฉันว่าinitializers bean post processors คืออะไร (เป็นวิธีการที่มีคำอธิบายประกอบ@PostContructและจะถูกเรียกโดยอัตโนมัติทันทีหลังจากวิธีการ setter (ดังนั้นหลังจากการฉีดการพึ่งพา) และฉันรู้ว่าฉันสามารถใช้เพื่อ ดำเนินการแบตช์การเริ่มต้นบางอย่าง (โดยเติมข้อมูลในแคชดังตัวอย่างก่อนหน้านี้)
แต่สิ่งที่แสดงถึงโปรเซสเซอร์ bean post อื่น ๆ ? เราหมายถึงอะไรเมื่อเราบอกว่าขั้นตอนเหล่านี้ดำเนินการก่อนหรือหลังขั้นตอนการเริ่มต้น ?
ดังนั้นถั่วของฉันจึงถูกสร้างอินสแตนซ์และการอ้างอิงของมันจะถูกฉีดเข้าไปดังนั้นขั้นตอนการเริ่มต้นจะเสร็จสมบูรณ์ (โดยการดำเนินการของวิธีการใส่คำอธิบายประกอบ@PostContruct ) เราหมายถึงอะไรที่บอกว่า Bean Post Processor ถูกใช้ก่อนขั้นตอนการเริ่มต้น? หมายความว่ามันเกิดขึ้นก่อนการเรียกใช้เมธอดที่ใส่คำอธิบายประกอบ@PostContruct ? หมายความว่ามันอาจเกิดขึ้นก่อนการฉีดแบบพึ่งพา (ก่อนที่จะเรียกวิธีการ setter)?
และว่าสิ่งที่เราหมายถึงเมื่อเราบอกว่ามันจะดำเนินการหลังจากขั้นตอนการเริ่มต้น หมายความว่ามันเกิดขึ้นหลังจากนั้นการเรียกใช้เมธอดที่ใส่คำอธิบายประกอบ@PostContructหรืออะไร?
ฉันสามารถคิดในหัวของฉันได้อย่างง่ายดายว่าทำไมฉันต้องใช้วิธีการที่มีคำอธิบายประกอบ@PostContructแต่ฉันไม่สามารถหาตัวอย่างทั่วไปของตัวประมวลผลโพสต์ bean ชนิดอื่นได้คุณช่วยแสดงตัวอย่างทั่วไปของเวลาที่ใช้งานได้ไหม