Spring - Beans Auto-Wiring
Anda telah mempelajari cara mendeklarasikan bean menggunakan elemen <bean> dan memasukkan <bean> menggunakan elemen <constructor-arg> dan <property> dalam file konfigurasi XML.
Wadah pegas bisa autowire hubungan antara kacang berkolaborasi tanpa menggunakan elemen <constructor-arg> dan <property>, yang membantu mengurangi jumlah konfigurasi XML yang Anda tulis untuk aplikasi berbasis Spring yang besar.
Mode Autowiring
Berikut adalah mode autowiring, yang dapat digunakan untuk menginstruksikan container Spring agar menggunakan autowiring untuk injeksi dependensi. Anda menggunakan atribut autowire dari elemen <bean /> untuk menentukanautowire mode untuk definisi kacang.
Sr Tidak | Mode & Deskripsi |
---|---|
1 | no Ini adalah pengaturan default yang berarti tidak ada autowiring dan Anda harus menggunakan referensi bean eksplisit untuk wiring. Anda tidak perlu melakukan apa-apa khusus untuk kabel ini. Inilah yang telah Anda lihat di bab Injeksi Ketergantungan. |
2 | dengan nama Autowiring menurut nama properti. Penampung Spring melihat properti kacang yang atribut autowire- nya disetel ke byName dalam file konfigurasi XML. Ia kemudian mencoba untuk mencocokkan dan menyambungkan propertinya dengan kacang yang ditentukan oleh nama yang sama di file konfigurasi. |
3 | byType Autowiring menurut tipe data properti. Penampung Spring melihat properti kacang yang atribut autowire- nya disetel ke byType di file konfigurasi XML. Kemudian mencoba untuk mencocokkan dan mentransfer properti jika itutypecocok dengan salah satu nama kacang di file konfigurasi. Jika ada lebih dari satu biji seperti itu, pengecualian fatal dilemparkan. |
4 | constructor Similar to byType, but type applies to constructor arguments. If there is not exactly one bean of the constructor argument type in the container, a fatal error is raised. |
5 | autodetect Spring first tries to wire using autowire by constructor, if it does not work, Spring tries to autowire by byType. |
You can use byType or constructor autowiring mode to wire arrays and other typed-collections.
Limitations with autowiring
Autowiring works best when it is used consistently across a project. If autowiring is not used in general, it might be confusing for developers to use it to wire only one or two bean definitions. Though, autowiring can significantly reduce the need to specify properties or constructor arguments but you should consider the limitations and disadvantages of autowiring before using them.
Sr.No. | Limitations & Description |
---|---|
1 | Overriding possibility You can still specify dependencies using <constructor-arg> and <property> settings which will always override autowiring. |
2 | Primitive data types You cannot autowire so-called simple properties such as primitives, Strings, and Classes. |
3 | Confusing nature Autowiring is less exact than explicit wiring, so if possible prefer using explict wiring. |