Ajukan pertanyaan
Instantiasi kacang di musim semi adalah bagian penting dari siklus hidup kacang. Biasanya, kacang tidak akan berubah setelah inisialisasi.
Jadi, apa proses instance Spring Bean? Lai
Analisis Proses Kacang Instantiasi Musim Semi
Untuk mendapatkan objek kacang, Anda harus terlebih dahulu mendapatkannya melalui metode beanfactory getBean (). Selama periode ini, serangkaian langkah akan diteruskan untuk membuat instantiate objek kacang:
Langkah 1: Panggil konstruktor default kacang (tentu saja, itu juga dapat menjadi konstruktor lain yang ditentukan) untuk menghasilkan instance kacang: bean1.
Langkah 2: Periksa apakah nilai atribut kacang disuntikkan ke dalam file konfigurasi kacang. Jika ada injeksi, suntikkan atributnya berdasarkan instance bean1, timpa Bean1 asli untuk membentuk instance kacang baru: bean2.
Langkah 3: Periksa apakah kacang mengimplementasikan antarmuka inisialisasi. Jika antarmuka ini diimplementasikan, hubungi metode afterpropertiesset () untuk melakukan operasi yang sesuai pada bean2, dan menimpa bean2 untuk membentuk instance kacang baru: bean3.
Langkah 4: Periksa apakah properti init-metode ditentukan dalam file konfigurasi kacang. Jika ditentukan, hubungi metode yang sesuai dari properti ini dan lakukan operasi yang sesuai pada Bean3, dan akhirnya menimpa Bean3 untuk membentuk contoh baru: Bean4.
Melalui langkah -langkah di atas, kami menemukan bahwa ketika musim semi contoh kacang, kacang terus berubah!
Demonstrasi Kode Proses Kacang Instantiasi Musim Semi
Untuk mengilustrasikan langkah -langkah di atas dengan lebih baik, silakan lihat kode berikut:
Kelas Entitas:
/** * Entity class*/public class Employee implements InitializingBean, DisposableBean, BeanNameAware {private String id;// employee number private String name;// employee name private String sex;// employee gender private String age;// employee age private String nativePlace;// employee place private String department;// employee department private String beanName;// bean name public Employee() {System.out.println ("************ Langkah 1: Hubungi konstruktor default kacang *************"); this.id = "bean1: g080405214"; System.out.println ("Nilai Bean1:" + Ini); System.out.println ("********* Langkah 2: Periksa apakah nilai properti kacang itu disuntikkan ke dalam file konfigurasi bean *******************");} Paplemen Konfigurasi BEAN ***************** " {System.out.println ("Nilai Bean2:" + this); System.out.println ("****************: Periksa apakah kacang mengimplementasikan antarmuka inisialisasi *************"); this.name = "bean3: li xiaoHong"; this.sex = "bean3: warwemh"; li xiaohong "; this.sex =" bean3: wood "; theme"; li xiaoHong "; this.sex =" bean3: theme "; theme"; li xiaoHong "; this.sex =" bean3: theme "; theme"; theme "; thisage = thisage = thisage = thisage = thisage = thisage; "Bean3: 25"; System.out.println ("Nilai Bean3:" + this);} public void init () {System.out.println ("************ Langkah 4: Periksa apakah Metod Init yang ditentukan dalam file konfigurasi kacang ***************"); this.native place = "Bean3: Beijing"; System.out.println ("Nilai Bean4:" + this);} public void dashing () melempar pengecualian {System.out.println ("************ Layanan berhenti *********");} public void setBeanName (string arg0) {out.out. bean **************** "); this.beanName =" myBeanName ";} public string getId () {return id;} public void setid (string id) {this.id = id;} public getName () {return name;} public void setname (string name) {this setSex(String sex) {this.sex = sex;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getNativePlace() {return nativePlace;}public void setNativePlace(String nativePlace) {this.nativePlace = nativePlace;}public String getDepartment() {return department;}public void setDepartment(String department) {this.department = department;}public String getBeanName() {return beanName;}@Override public String toString() {return "Employee [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", nativePlace=" + nativePlace + ", department=" + department + ", beanName=" + beanName + "]";}}Peralatan:
/*** Kelas Alat Konteks Kacang*/Kelas Publik Beancontexthelper {private static applicationContext _instance; static {if (_instance == null) _instance = buildingApplicationContext ();} private beAncontExthelper () {}/** rebuildextext ();} applicationconcontcextExtExtExclper () {}/** Rebuild (); {return new classpathxmlapplicationContext ("applicationContext-base.xml");}/*** Dapatkan objek ApplicationContext*/public staticcontext getApplicationContext () {return _instance;}}Konfigurasi Kacang Musim Semi:
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: context = "http://www.springframework.org/schema/context" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: tx = "http:/schema/aop" xmlns: tx = "http:/schema.aop" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-weans-2.4.xsd http:/wwww.spramorker http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/aop:aop: http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http:/www.spramework.org/schema/tx <!-================= Uji proses instantiating kacang di kacang musim semi-> <bean id = "karyawan" init-metod = "init" dashing-method = "hancurkan"> <!-Departemen default adalah departemen r & d </<nama properti = "departemen"> <value> Bean2: R & D Departemen R&D-> <nama properti = "DEPARTEMEN"> BEAN> BEAN/BEAN2: R & D DEPARTEMENT-> <nama properti = "DEPARTEMEN"> BEAN> BEAN/BEAN2: R & D DEPARTEMEN </<Property nama = "DEPARTEMEN"> BEAN> BEAN>
Kelas Tes:
/*** Kelas Uji Kacang Instantiasi Kacang BeanFactory*/tes kelas publik {public static void main (string args []) {test test = test baru (); test.test ();} public void test () {applicationContext context = beanContExthelper.getApplicationContext (); momeerleee contextereeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee context.getbean ("karyawan"); System.out.println ("************ Dari musim semi instance kacang terakhir yang diperoleh oleh beanfactory **********"); System.out.println ("Nilai kacang terakhir:" + karyawan);}}}Hasil Menjalankan:
************ Langkah 1: Panggil konstruktor default kacang **************** Nilai bean1: karyawan [id = bean1: g080405214, name = null, seks = null, null, nullplace = null, departemen = null, beanname = null] ***** The Bean ******************* Nilai bean2: karyawan [id = bean1: g080405214, name = null, sex = null, usia = null, nativePlace = null, departemen = bean2: r & d departemen, beanname = myBeanName] ********* langkah 3: check -dte the bean** hasbean namanya] ******* langkah 3: apakah itu Departemen bean** of bean3: Employee [id=bean1:G080405214, name=bean3:Li Xiaohong, sex=bean3:female, age=bean3:25, nativePlace=null, department=bean2: R&D department, beanName=myBeanName] ********* Step 4: Check whether init-method is specified in the bean configuration file. This attribute**************** The value of bean4: Employee [id=bean1:G080405214, name=bean3:Li Xiaohong, sex=bean3:female, age=bean3:25, nativePlace=bean3:Beijing, department=bean2:R&D department, beanName=myBeanName] *************The final bean instance obtained from Spring Beanfactory ************* Nilai kacang terakhir: karyawan [id = bean1: g080405214, name = bean3: li xiaohong, sex = bean3: perempuan, usia = bean3: 25, native = bean3: beijing, departemen = bean2: r & d departemen, beanname = mybean)
Menilai dari hasil operasi, kita harus sangat jelas tentang proses spesifik instantiasi kacang.
Karyawan mengimplementasikan 3 antarmuka:
InitializingBean: Antarmuka ini menyediakan metode afterpropertiesset (), yang digunakan untuk memberikan fungsi dengan fungsi inisialisasi.
DisposableBean: Antarmuka ini menyediakan metode Destroy (), yang digunakan untuk menyediakan fungsi operasional sebelum instance kacang dihancurkan.
BeanNameaware: Antarmuka ini menyediakan metode setBeanName (), yang digunakan untuk menyediakan fungsi pengaturan nama kacang. Dari hasil berjalan di atas, metode ini dilakukan pada langkah kedua.
Meringkaskan
Di atas adalah seluruh isi artikel ini tentang proses instantiating kacang di musim semi. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
" Dua cara untuk menyesuaikan akuisisi kacang di musim semi "
" Analisis Kode Insstance Konfigurasi Anotasi Spring Annotation Java "
" Penjelasan terperinci tentang siklus hidup konfigurasi dan penggunaan pegas "
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!