Artikel ini menjelaskan manajemen dasar Spring Bean beserta contohnya. Bagikan kepada semua orang untuk referensi Anda, detailnya sebagai berikut:
1. Gunakan metode penyetel untuk menyelesaikan injeksi ketergantungan
Di bawah ini adalah file Bean dan beans-config.xml.
public class HelloBean { private String helloWord; //...hilangkan metode pengambil dan penyetel}
<?xml version="1.0" coding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans. dtd"> <beans> <bean id="helloBean" > <property name="helloWord"> <value>Halo!Justin!</value> </property> </kacang> </kacang>
kelas publik SpringDemo { public static void main(String[] args) { Resource rs = new FileSystemResource("beans-config.xml"); Pabrik BeanFactory = new XmlBeanFactory(rs); helloBean"); System.out.println(halo.getHelloWord()); } }
2. Gunakan metode konstruktor untuk menyelesaikan injeksi
public class HelloBean { private String name; private String helloWord; // Direkomendasikan untuk memiliki metode konstruksi tanpa parameter public HelloBean() { } public HelloBean(String name, String helloWord) { this.name = name; ; } //...Hilangkan metode pengambil dan penyetel}
<?xml version="1.0" coding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans. dtd"> <beans> <bean id="helloBean" > <constructor-arg index="0"> <value>Justin</value> </constructor-arg> <constructor-arg index="1"> <value>Halo</value> </constructor-arg> </bean> </beans>
kelas publik SpringDemo { public static void main(String[] args) { Konteks Aplikasi = new FileSystemXmlApplicationContext("beans-config.xml"); HelloBean hello = (HelloBean) konteks.getBean("helloBean"); ("Nama: "); Sistem.keluar.println(halo.getName()); Sistem.keluar.cetak("Kata: "); Sistem.keluar.println(halo.getHelloWord());
3. Referensi atribut
public class HelloBean { private String helloWord; private Date date; //...hilangkan metode pengambil dan penyetel}
<beans> <bean id="dateBean"/> <bean id="helloBean"> <nama properti="helloWord"> <value>Halo!</value> </property> <nama properti="date"> < ref bean="dateBean"/> </property> </bean> </beans>
kelas publik SpringDemo { public static void main(String[] args) { Konteks Aplikasi = new FileSystemXmlApplicationContext("beans-config.xml"); HelloBean hello = (HelloBean) konteks.getBean("helloBean"); (halo.getHelloWord()); System.out.print("Ini"); Sistem.keluar.cetak(halo.getDate()); Sistem.keluar.println(".");
4. pengikatan otomatis "byType".
Ubah file konfigurasi di "Tiga" menjadi yang berikut ini untuk menyelesaikan pengikatan otomatis atribut kacang berdasarkan jenisnya.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="byType"> <property name="helloWord"> <value>Halo!</value> </property> </bean> </kacang>
5. pengikatan otomatis "byName".
Ubah file konfigurasi di "Tiga" menjadi yang berikut untuk menyelesaikan pengikatan otomatis atribut kacang berdasarkan nama.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="byName"> <property name="helloWord"> <value>Halo!</value> </property> </bean> </kacang>
6. pengikatan otomatis "konstruktor".
Ubah file konfigurasi di "Tiga" menjadi yang berikut ini untuk menyelesaikan pengikatan otomatis atribut kacang sesuai dengan metode konstruksi. Saat membuat hubungan ketergantungan, container Spring akan mencoba membandingkan tipe instance Bean dalam container dan tipe parameter pada konstruktor terkait untuk melihat apakah tipe tersebut konsisten . Jika tidak dapat diikat, pengecualian org.springframework.beans.factory.UnsatisfiedDependencyException akan dilemparkan.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="constructor"> <property name="helloWord"> <value>Halo!</value> </property> </bean> </kacang>
6. pengikatan otomatis "deteksi otomatis".
Ubah file konfigurasi di "Tiga" menjadi yang berikut ini untuk menyelesaikan pengikatan otomatis atribut kacang. Pengikatan otomatis ini berarti Spring akan mencoba menggunakan konstruktor untuk menangani pembuatan dependensi kelas untuk membangunnya.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="autodetect"> <property name="helloWord"> <value>Halo!</value> </property> </bean> </kacang>
7. Metode pemeriksaan ketergantungan
Dalam pengikatan otomatis, karena tidak ada cara untuk melihat dengan jelas apakah setiap atribut telah disetel dari file definisi, untuk memastikan bahwa dependensi tertentu memang dibuat, Anda dapat mengatur pemeriksaan ketergantungan saat menggunakan tag <bean>. pemeriksaan ketergantungan", ada empat metode pemeriksaan ketergantungan: sederhana, objek, semua, dan tidak ada.
sederhana: Hanya memeriksa apakah properti tipe sederhana (seperti tipe data primitif atau objek string) melengkapi dependensi.
objek: Periksa apakah properti tipe objek melengkapi ketergantungan.
all: Periksa apakah semua atribut melengkapi dependensi.
none: Pengaturannya adalah nilai default, yang menunjukkan bahwa dependensi tidak dicentang.
<beans> <bean id="dateBean"/> <bean id="helloBean" autowire="autodetect" dependeny-check="all"> <property name="helloWord"> <value>Halo!</value> < /properti> </kacang> </kacang>
8. Injeksi objek koleksi
Untuk objek koleksi seperti array, Daftar, Set, dan Peta, beberapa objek harus diisi ke dalam koleksi sebelum disuntikkan. Kemudian ketika objek koleksi dimasukkan ke dalam kacang yang diperlukan, objek tersebut juga dapat dipelihara atau dihasilkan secara otomatis oleh wadah IoC Spring. Objek koleksi dan injeksi ketergantungan lengkap.
public class SomeBean { private String[] someStrArray; private Some[] someObjArray; private Daftar someList; private Map someMap; public String[] getSomeStrArray() { return someStrArray } public void setSomeStrArray(String[] someStrArray) { this.someStrArray; someStrArray; } publik Beberapa[] getSomeObjArray() { kembalikan someObjArray } kekosongan publik setSomeObjArray(Beberapa[] someObjArray) { this.someObjArray = someObjArray; } Daftar publik getSomeList() { return someList; } public void setSomeList(List someList) { this.someList = someList; public void setSomeMap(Peta someMap) { this.someMap = someMap } }kelas publik Beberapa { nama String pribadi; public String getName() { mengembalikan nama; } public void setName(String nama) { this.name = nama;
<?xml version="1.0" coding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans. dtd"> <beans> <bean id="some1"> <property name="name"> <value>Justin</value> </property> </bean> <bean id="some2"> <property name="name"> <value>momor</value> </property> </bean> <bean id="someBean"> <property name="someStrArray"> <list> < value>Halo</value> <value>Selamat datang</value> </list> </property> <property name="someObjArray"> <list> <ref bean="some1"/> <ref bean="some2"/> </list> </property> <nama properti="someList"> <list> <value>ListTest</value> <ref bean="some1"/> <ref bean="some2" /> </list> </property> <property name="someMap"> <map> <entry key="MapTest"> <value>Halo!Justin!</value> </entry> <entry key="someKey1 "> <ref bean="some1"/> </entry> </map> </property> </bean> </beans>
public class SpringDemo { public static void main(String[] args) { ApplicationContext konteks = new FileSystemXmlApplicationContext( "beans-config.xml"); Objek injeksi ketergantungan stateful String[] strs = (String[]) someBean.getSomeStrArray(); (Beberapa[]) someBean.getSomeObjArray(); for(int i = 0; i < strs.length; i++) { System.out.println(strs[i] + "," + somes[i].getName() } // Dapatkan objek injeksi ketergantungan tipe Daftar System.out.println(); Daftar someList = (Daftar) someBean.getSomeList(); someList.size(); i++) { System.out.println(someList.get(i) } // Dapatkan objek injeksi ketergantungan tipe Peta System.out.println(); (); Sistem.keluar.println(someMap.get("MapTest")); Sistem.keluar.println(someMap.get("someKey1") } }
Saya harap artikel ini bermanfaat bagi semua orang dalam pemrograman Java.