คำนำ
บทความก่อนหน้านี้ส่วนใหญ่เรียนรู้เกี่ยวกับการกำหนดค่าการฉีดและโปรแกรมแก้ไขคุณสมบัติที่กำหนดเองของถั่ว วันนี้มาทำความคุ้นเคยกับวงจรชีวิตของถั่ว
สิ่งใดก็ตามมีวัฏจักรชีวิตของตัวเองจุดเริ่มต้นการสิ้นสุดของชีวิต สิ่งที่คุณคุ้นเคยมากที่สุดคือวงจรชีวิตของ Servlets เช่นเดียวกับ Servlets ถั่วฤดูใบไม้ผลิยังมีวงจรชีวิตของตัวเอง
วงจรชีวิตเป็นคำนามที่พบบ่อยมากในการพัฒนาและโดยทั่วไปแล้วทุกภาษาการเขียนโปรแกรมสามารถค้นหาได้ ฉันยังมองหาวงจรชีวิตถั่วมากมายทางออนไลน์และพวกเขาก็เหมือนกัน ที่นี่ส่วนใหญ่ฉันต้องการตรวจสอบผ่านรหัส ท้ายที่สุดความรู้ที่ฉันเรียนรู้นั้นเหมือนกันฉันเรียนรู้ Java และสิ่งที่สำคัญที่สุดคือการฝึกฝนเพื่อให้ฉันจำได้มากขึ้น
ด้านล่างนี้เป็นคำอธิบายของวงจรชีวิตซึ่งเราตรวจสอบผ่านการสาธิต
รูปต่อไปนี้แสดงลำดับที่ดำเนินการ
1. สร้างคลาส LiftCycle เพื่อใช้ 5 วิธีการเชื่อมต่อ: BeanFactoryAware, BeannameAware, InitializingBean, DisposableBean, ApplicationContextaware
แพ็คเกจ cuiyw.spring.service; นำเข้า org.springframework.beans.beansexception; นำเข้า org.springframework.beans.factory.beanfactory; นำเข้า org.springframework.beans.factory.beannamaware; org.springframework.beans.factory.disposablebean; นำเข้า org.springframework.beans.factory.initializingBean; นำเข้า org.springframework.context.applicationContext; นำเข้า org.springframework.context.application.application BeanFactoryAware, Beannameaware, InitializingBean, DisposableBean, ApplicationContextaware {ชื่อสตริงส่วนตัว; สตริงสาธารณะ getName () {system.out.println ("getName name ="+ชื่อ); ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {system.out.println ("setName name ="+ชื่อ); this.name = ชื่อ; } โมฆะสาธารณะ AfterPropertIesset () พ่นข้อยกเว้น {// วิธีการที่สร้างขึ้นอัตโนมัติวิธี Stub System.out.println ("InitializingBean.afterpropertiesset ()"); } โมฆะสาธารณะ setBeanName (String arg0) {// todo วิธีการที่สร้างอัตโนมัติระบบ Stub System.out.println ("BeannameAwer.setBeanName"); } โมฆะสาธารณะ setBeanFactory (beanfactory arg0) พ่น beansexception {// todo วิธีการที่สร้างขึ้นอัตโนมัติระบบ Stub System.out.println ("beanfactoryaware.setBeanFactory"); } โมฆะสาธารณะทำลาย () โยนข้อยกเว้น {// todo วิธีการที่สร้างอัตโนมัติระบบ Stub System.out.println ("disposableBean.destroy"); } โมฆะสาธารณะ myinit () {system.out.println ("【 init-method 】การเรียกใช้วิธีการเริ่มต้นที่ระบุโดยคุณสมบัติเริ่มต้นของ <bean>"); } โมฆะสาธารณะ myDestory () {system.out.println ("【ทำลาย-วิธีการเรียกใช้วิธีการเริ่มต้นที่ระบุโดยคุณสมบัติการทำลาย-วิธีการของ <bean>"); } โมฆะสาธารณะ setApplicationContext (ApplicationContext arg0) พ่น beansexception {// toDo วิธีการที่สร้างอัตโนมัติระบบ Stub System.out.println ("ApplicationContextaware.setApplicationContext"); -2. ลงทะเบียนอินเทอร์เฟซ InstantiationawareBeanPostProcessor
แพ็คเกจ cuiyw.spring.service; นำเข้า java.beans.propertydescriptor; นำเข้า org.springframework.beans.beansexception; นำเข้า org.springframework.beans.propertyvalues; MyInstantiationawareBeanPostProcessor ใช้ InstantiationAwareBeanPostProcessor {วัตถุสาธารณะ postprocessafterinitialization (ถั่ววัตถุ, สตริงถั่ว) โยน beansexception {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ คืนถั่ว; } วัตถุสาธารณะ postprocessbeforeinitialization (Object Bean, String Beanname) พ่น beansexception {// todo วิธีการที่สร้างอัตโนมัติระบบสตับระบบ. คืนถั่ว; } บูลีนสาธารณะ postprocessafterinstantiation (Object Bean, String Beanname) พ่น beansexception {// toDo วิธีการที่สร้างอัตโนมัติระบบ Stub System.out.println ("InstantiationawareBeanPostProcessor.postProcessafterinstantiation"); กลับมาจริง; } วัตถุสาธารณะ postprocessbeforeinstantiation (คลาส <s?> beanclass, สตริง Beanname) พ่น beansexception {// todo วิธีการที่สร้างขึ้นอัตโนมัติระบบ Stub System.out.println ( คืนค่า null; } Public PropertyValues PostprocessPropertyValues (PropertyValues PVS, PropertyDescriptor [] PDS, Object Bean, String Beanname) พ่น beansexception {// toDo วิธีการที่สร้างขึ้นอัตโนมัติ กลับ PVS; -3. ลงทะเบียนอินเตอร์เฟส BeanPostProcessor
ในความเป็นจริง InstantiationawareBeanPostProcessor สืบทอด BeanPostProcessor ดังนั้นฉันจึงใช้วิธีการของอินเทอร์เฟซ BeanPostProcessor ด้านบน
แพ็คเกจ cuiyw.spring.service; นำเข้า org.springframework.beans.beansexception; นำเข้า org.springframework.beans.factory.config.beanpostprocessor; beansexception {// todo วิธีการที่สร้างขึ้นอัตโนมัติระบบ Stub System.out.println ("beanpostprocessor.postprocessafterinitialization"); คืนถั่ว; } วัตถุสาธารณะ postprocessbeforeinitialization (Object Bean, String Beanname) พ่น beansexception {// todo วิธีการที่สร้างอัตโนมัติระบบสตับระบบ. คืนถั่ว; -4. ลงทะเบียนอินเตอร์เฟส BeanFactoryPostProcessor
แพ็คเกจ cuiyw.spring.service; นำเข้า org.springframework.beans.beansexception; นำเข้า org.springframework.beans.factory.config.beanfactorypostprocessor; นำเข้า org.springframework.beans.beans. ใช้ beanfactorypostprocessor {โมฆะสาธารณะ postprocessbeanfactory (configurableListableBeanFactory arg0) พ่น beansexception {// todo วิธีการที่สร้างอัตโนมัติระบบสตับ. -5. กำหนดค่าในบริบท
ฉันจะแก้ไขตามการสาธิตของบล็อกก่อนหน้า เพื่อให้มีสัญญาณรบกวนอื่น ๆ ฉันจะลบบริการก่อน
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml XSI: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd" id = "InstantiationAwareBeanPostProcessor"> </epean> <Bean ID = "BeanFactoryPostProcessor"> </epean> <Bean ID = "Lifecycle" init-method = "MyInit" Destroy </bean> </bean>
6. ใช้ถั่วในหลัก
แพ็คเกจ cuiyw.springaop; นำเข้า org.springframework.beans.factory.beanfactory; นำเข้า org.springframework.context.applicationcontext; นำเข้า org.springframework.context.support.classpathxmlapplication cuiyw.spring.service.lifecycle; แอพคลาสสาธารณะ {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {applicationcontext context = ใหม่ classpathxmlapplicationContext (สตริงใหม่ [] {"ApplicationContext.xml"}); โรงงาน Beanfactory = บริบท; Lifecycle Lifecycle = Factory.getBean ("วงจรชีวิต", Lifecycle.class); Lifecycle.setName ("Cuiyw2"); System.out.println ("lifecycle.name ="+lifecycle.getName ()); ((classpathxmlapplicationContext) โรงงาน) .registershutdownhook (); /*Service=(Service) factory.getBean("Servicea "); Service.service ("Cuiyw Servicea"); บริการ = (iservice) Factory.getBean ("ServiceImpl"); Service.service ("Cuiyw ServiceImpl"); -7. ป้อนผลการพิมพ์
จะพบได้ว่าลำดับของเอาต์พุตนั้นเหมือนกับลำดับของรูปด้านบน
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com