ถามคำถาม
อินสแตนซ์ของถั่วในฤดูใบไม้ผลิเป็นส่วนสำคัญของวงจรชีวิตถั่ว โดยปกติแล้วถั่วจะไม่เปลี่ยนแปลงหลังจากเริ่มต้น
แล้วกระบวนการของถั่วสปริงคืออะไร? -
การวิเคราะห์กระบวนการถั่วอินสแตนซ์สปริง
ในการรับวัตถุถั่วคุณต้องได้รับมันผ่านวิธี getBean () ของ beanfactory ในช่วงเวลานี้ชุดของขั้นตอนจะถูกส่งผ่านเพื่อยกตัวอย่างวัตถุถั่ว:
ขั้นตอนที่ 1: เรียกตัวสร้างเริ่มต้นของถั่ว (แน่นอนมันสามารถเป็นตัวสร้างอื่น ๆ ที่ระบุ) เพื่อสร้างอินสแตนซ์ถั่ว: ถั่ว 1
ขั้นตอนที่ 2: ตรวจสอบว่าค่าแอตทริบิวต์ของถั่วถูกฉีดเข้าไปในไฟล์การกำหนดค่าถั่วหรือไม่ หากมีการฉีดให้ฉีดแอตทริบิวต์ตามอินสแตนซ์ Bean1 ให้เขียนทับ Bean1 ดั้งเดิมเพื่อสร้างอินสแตนซ์ถั่วใหม่: Bean2
ขั้นตอนที่ 3: ตรวจสอบว่าถั่วใช้อินเทอร์เฟซ InitializingBean หรือไม่ หากมีการใช้งานอินเทอร์เฟซนี้ให้เรียกใช้เมธอด AfterPropertIesset () เพื่อดำเนินการที่สอดคล้องกันบน Bean2 และเขียนทับ Bean2 เพื่อสร้างอินสแตนซ์ถั่วใหม่: Bean3
ขั้นตอนที่ 4: ตรวจสอบว่ามีการระบุคุณสมบัติ init-method ในไฟล์การกำหนดค่าถั่วหรือไม่ หากมีการระบุให้เรียกใช้วิธีการที่สอดคล้องกันของคุณสมบัตินี้และดำเนินการที่สอดคล้องกันใน Bean3 และในที่สุดก็เขียนทับ Bean3 เพื่อสร้างอินสแตนซ์ใหม่: Bean4
ผ่านขั้นตอนข้างต้นเราพบว่าเมื่อสปริงอินสแตนซ์ถั่วถั่วจะเปลี่ยนแปลงอยู่ตลอดเวลา!
การสาธิตรหัสกระบวนการถั่วในฤดูใบไม้ผลิ
เพื่อแสดงขั้นตอนข้างต้นได้ดีขึ้นโปรดดูรหัสต่อไปนี้:
ระดับเอนทิตี:
/*** ระดับเอนทิตี*/พนักงานชั้นเรียนสาธารณะใช้การเริ่มต้นเบียน, disposableBean, BeannameAware {รหัสสตริงส่วนตัว; // หมายเลขพนักงานชื่อสตริงส่วนตัว; // ชื่อพนักงานชื่อสตริงส่วนตัว; // พนักงานเพศส่วนตัวอายุ; // พนักงานอายุ {System.out.println ("************ ขั้นตอนที่ 1: เรียกตัวสร้างเริ่มต้นของถั่ว *************"); this.id = "bean1: g080405214"; system.out.println ("ค่าของ Bean1:" + this); system.out.println ("********* ขั้นตอนที่ 2: ตรวจสอบว่ามูลค่าทรัพย์สินของถั่วถูกฉีดลงในไฟล์การกำหนดค่าถั่ว {system.out.println ("ค่าของ Bean2:" + this); system.out.println ("************ ขั้นตอนที่ 3: ตรวจสอบว่าถั่วใช้อินเทอร์เฟซ itiedizingbean ***********"); this.name = "bean3: li xiaohong"; "Bean3: 25"; System.out.println ("ค่าของ Bean3:" + this);} โมฆะสาธารณะ init () {system.out.println ("************ ขั้นตอนที่ 4: ตรวจสอบว่ามีการระบุตัวเริ่มต้นในไฟล์การกำหนดค่าถั่ว ***************** "Bean3: Beijing"; System.out.println ("ค่าของ Bean4:" + this);} โมฆะสาธารณะทำลาย () โยนข้อยกเว้น {system.out.println ("********** บริการหยุด ***********"); Bean **************** "); this.beanname =" myBeanName ";} สตริงสาธารณะ getId () {return id;} โมฆะสาธารณะ setId (String id) {this.id = id;} public String getName () {ชื่อกลับ; SetSex (String Sex) {this.sex = sex;} public String getage () {return Age;} setage โมฆะสาธารณะ (อายุสตริง) {this.age = age;} public String getnative place () {return nativeplace;} public void setnativeplace แผนก) {this.department = แผนก;} public String getBeanName () {return beanname;}@reverride สตริงสาธารณะ toString () {return "พนักงาน [id =" + id + ", name =" + name + ", sex =" sex + sex + ", อายุ = -เครื่องมือ:
/*** เครื่องมือบริบทถั่วคลาส*/คลาสสาธารณะ BEANCONTEXTHELPER {Private Static ApplicationContext _Instance; Static {ถ้า (_instance == NULL) _instance = buildApplicationContext ();}} static PublicContext classpathxmlapplicationContext ("applicationcontext-base.xml");}/*** รับวัตถุแอปพลิเคชันแอปพลิเคชัน*/แอปพลิเคชันสาธารณะคงที่ getApplicationContext () {return _instance;}}การกำหนดค่าถั่วของฤดูใบไม้ผลิ:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http:/ XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://ww.springframework http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://ww.springframework.org/schema http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://ww.springframework.org/schema <!-================= ทดสอบกระบวนการของการสร้างอินสแตนซ์ถั่วในฤดูใบไม้ผลิถั่ว-> <bean id = "พนักงาน" init-method = "init" destroy-method = "ทำลาย"> <!
คลาสทดสอบ:
/*** beanfactory อินสแตนซ์วิศวกรรมการทดสอบวิศวกรรมถั่ว*/การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง args []) {ทดสอบทดสอบ = การทดสอบใหม่ (); test.test ();} การทดสอบโมฆะสาธารณะ () {applicationContex Context.getBean ("พนักงาน"); System.out.println ("************ จากฤดูใบไม้ผลิอินสแตนซ์ถั่วสุดท้ายที่ได้รับจาก beanfactory **********"); System.out.println ("คุณค่าของถั่วสุดท้าย:" พนักงาน);}}}}}}ผลการทำงาน:
************ ขั้นตอนที่ 1: เรียกตัวสร้างเริ่มต้นของถั่ว ************** ค่าของ Bean1: พนักงาน [id = bean1: g080405214, ชื่อ = null, sex = null, อายุ = null, Native null ถั่ว ***************** ค่าของ Bean2: พนักงาน [ID = Bean1: G080405214, ชื่อ = null, sex = null, อายุ = null, nativeplace = null, แผนก = Bean2: R & D Dipstement ของ Bean3: พนักงาน [ID = Bean1: G080405214, NAME = Bean3: Li Xiaohong, Sex = Bean3: หญิง, อายุ = Bean3: 25, Nativeplace = Null, แผนก = Bean2: R&D แผนก, Beanname = MyBeanname] ********* แอตทริบิวต์นี้ ************** ค่าของ Bean4: พนักงาน [ID = Bean1: G080405214, ชื่อ = Bean3: Li Xiaohong, Sex = Bean3: เพศหญิง, อายุ = Bean3: 25, Nativeplace = Bean3 Beanfactory *********** ค่าถั่วสุดท้าย: พนักงาน [ID = Bean1: G080405214, ชื่อ = Bean3: Li Xiaohong, Sex = Bean3: เพศหญิง, อายุ = Bean3: 25, Nativeplace = Bean3: Beijing, แผนก = Bean2
เมื่อพิจารณาจากผลการดำเนินงานเราควรมีความชัดเจนเกี่ยวกับกระบวนการเฉพาะของการสร้างอินสแตนซ์ถั่ว
พนักงานใช้ 3 อินเตอร์เฟส:
InitializingBean: อินเทอร์เฟซนี้มีวิธีการ AfterPropertIesset () ซึ่งใช้เพื่อให้ฟังก์ชั่นการกำหนดค่าเริ่มต้น
DisposableBean: อินเทอร์เฟซนี้ให้วิธีการทำลาย () ซึ่งใช้เพื่อให้ฟังก์ชั่นการปฏิบัติงานก่อนที่อินสแตนซ์ถั่วจะถูกทำลาย
Beannameaware: อินเทอร์เฟซนี้มีวิธี setBeanName () ซึ่งใช้เพื่อให้ฟังก์ชั่นของการตั้งค่าชื่อถั่ว จากผลการดำเนินการข้างต้นวิธีนี้จะดำเนินการในขั้นตอนที่สอง
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับกระบวนการสร้างอินสแตนซ์ถั่วในฤดูใบไม้ผลิ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
" สองวิธีในการปรับแต่งการซื้อถั่วในฤดูใบไม้ผลิ "
" การวิเคราะห์รหัสอินสแตนซ์ของการกำหนดค่าหมายเหตุการกำหนดค่าหมายเหตุฤดูใบไม้ผลิของ Java "
" คำอธิบายโดยละเอียดเกี่ยวกับวงจรชีวิตของการกำหนดค่าสปริงและการใช้งาน "
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!