Dalam file konfigurasi pegas, kami sering mengatur berbagai jenis nilai properti kacang melalui nilai literal, dan fungsi ini diimplementasikan melalui editor properti.
Kelas apa pun yang mengimplementasikan antarmuka java.beans.propertyeditor adalah editor properti. Ini dapat mengonversi nilai eksternal yang akan diatur ke tipe yang sesuai di dalam JVM, sehingga editor properti sebenarnya adalah konverter tipe.
1 Editor Javabean
Editor Javabean yang dikembangkan oleh Sun sebagian besar siap untuk IDE. Ini memungkinkan IDE untuk mengatur sifat -sifat Javabeans secara visual.
Java mendefinisikan metode pengaturan properti Javabean melalui java.beans.propertyeditor. Melalui Beaninfo, ini menggambarkan sifat -sifat Javabean mana yang dapat disesuaikan. Selain itu, ini juga menjelaskan korespondensi antara properti yang dapat disesuaikan dan PropertyEditor.
Korespondensi antara Beaninfo dan Javabean dibuat melalui penamaan norma antara keduanya. Beaninfo yang sesuai dengan JavaBean mengadopsi spesifikasi penamaan berikut: <Bean> beaninfo. Misalnya, beaninfo yang sesuai dengan Bookbean adalah BookbeanbeanInfo. Ketika seorang Javabean terdaftar dengan IDE bersama dengan editor atributnya, ketika JavaBean disesuaikan dalam antarmuka pengembangan, IDE akan menemukan beaninfo yang sesuai sesuai dengan spesifikasi Javabean, dan kemudian menemukan deskripsi atribut Javabean (yang Atribut Atribut digunakan, dll.) Berdasarkan informasi deskripsi di Beaninfo, dan generate.
Java menyediakan manajer untuk mengelola editor properti default: PropertyEditormanager, yang memegang beberapa jenis editor properti yang umum. Jika properti tipe umum Javabean tidak secara eksplisit menentukan editor propertinya melalui BeanInfo, IDE secara otomatis akan menggunakan editor default untuk properti yang sesuai yang terdaftar di PropertyEditormanager.
1.1 PropertyEditor
PropertyEditor adalah antarmuka editor properti yang mendefinisikan metode antarmuka yang mengonversi nilai set eksternal ke nilai properti JavaBean internal. Metode antarmuka utama dijelaskan sebagai berikut:
| metode | menjelaskan |
|---|---|
| Objek getValue () | Mengembalikan nilai saat ini dari atribut, tipe dasar dienkapsulasi ke dalam tipe pembungkus yang sesuai |
| void setValue (objek newValue) | Atur nilai atribut, tipe dasar dilewatkan sebagai tipe pembungkus |
| String getastext () | Gunakan string untuk mewakili objek atribut sehingga editor atribut eksternal dapat menampilkannya secara visual. Mengembalikan nol secara default, menunjukkan bahwa properti tidak dapat direpresentasikan sebagai string. |
| membatalkan setastext (Teks String) | Gunakan string untuk memperbarui nilai internal properti, yang umumnya diturunkan dari editor properti eksternal. |
| String [] gettags () | Mengembalikan array string yang mewakili nilai atribut yang valid sehingga editor atribut dapat menampilkannya dengan cara berikut. Mengembalikan NULL secara default. |
| String getjavainitalizationstring () | Memberikan nilai awal untuk properti, yang digunakan editor properti sebagai nilai default untuk properti. |
Antarmuka PropertyEditor adalah jembatan komunikasi antara nilai properti internal dan nilai pengaturan eksternal.
Java menyediakan kelas implementasi yang nyaman untuk PropertyEditor: PropertyEditorSupport, yang mengimplementasikan antarmuka PropertyEditor. Kami dapat merancang editor properti kami sendiri dengan memperluas kelas ini.
1.2 Deskripsi Atribut Bean (BeanInfo)
BeanInfo menjelaskan properti yang dapat diedit di Javabean dan editor properti yang sesuai, setiap properti sesuai dengan properti deskriptor properti PropertyDescriptor.
Konstruktor PropertyDescriptor memiliki dua parameter: PropertyDescriptor (String PropertyName, kelas beansclass), di mana propertiName adalah nama properti; BeanClass adalah kelas yang sesuai dengan Javabean.
PropertyDescriptor juga memiliki metode SetPropertyEditorClass (PropertyEditorClass), yang menentukan editor untuk Javabean Properties.
Metode terpenting dalam antarmuka BeanInfo adalah: PropertyDescriptor [] getPropertyDescriptors (), yang akan mengembalikan array deskriptor properti JavaBean.
Kelas implementasi yang umum digunakan untuk antarmuka BeanInfo adalah SimpleBeanInfo, yang dapat kami terapkan fungsi yang disesuaikan dengan memperluas kelas ini.
2 Editor Properti Default Musim Semi
Editor Properti Spring berbeda dari Editor Properti Tradisional untuk Pengembangan IDE. Itu tidak memiliki antarmuka UI dan hanya mengonversi nilai konfigurasi teks dalam file konfigurasi ke nilai yang sesuai dari properti kacang.
Spring menyediakan editor properti default untuk tipe properti umum di propertiEditorRegistrySupport, yang dibagi menjadi 3 kategori utama, dengan total 32:
| jenis | menjelaskan |
|---|---|
| Tipe data dasar | [1] Jenis data dasar, seperti: boolean, int, dll.; [2] Kelas enkapsulasi tipe data dasar, seperti: boolean, integer, dll.; [3] Array tipe data dasar: char [] dan byte []; [4] Jumlah besar: BigDecimal dan Biginteger. |
| Kelas Koleksi | Koleksi, Set, SortedSet, Daftar, dan SortedMap. |
| Sumber daya | Kelas, kelas [], file, inputstream, lokal, properti, sumber daya [], dan url. |
Ada dua variabel jenis peta di propertiEditorRegistrySupport yang menyimpan editor properti:
| Nama variabel | menjelaskan |
|---|---|
| Defaulteditor | Editor yang menyimpan jenis atribut default, kunci elemen adalah jenis atribut, dan nilainya adalah instance editor atribut yang sesuai. |
| CustomEditors | Simpan editor atribut yang ditentukan pengguna, nilai-nilai kunci elemen sama dengan diraih default. |
3 Editor Properti Spring Kustom
Jika aplikasi kami mendefinisikan jenis atribut khusus dan ingin mengonfigurasi nilai atribut secara harfiah dalam file konfigurasi, maka kami dapat menulis editor atribut khusus dan mendaftarkannya dengan wadah pegas untuk mengimplementasikannya.
Sebagian besar editor properti default musim semi diperpanjang dari java.beans.propertyeditorsupport. Kami dapat menyesuaikan editor properti dengan memperluas propertiportorsport. Di Lingkungan Musim Semi, Anda hanya perlu mengonversi nilai literal dalam file konfigurasi ke objek jenis properti, dan Anda tidak perlu menyediakan antarmuka UI, jadi Anda hanya perlu mengganti metode setastext () dari properti propertyorsupport (∩_∩) o haha ~.
Misalkan kita memiliki dua buku dan penulis entitas, dan kami berharap bahwa ketika mengkonfigurasi buku, kami dapat secara langsung mengatur nama penulis.
Book.java
buku kelas publik { / *** penulis* / penulis privat; / *** Judul buku*/ nama string privat; // hilangkan metode get/setter}Penulis.java
penulis kelas publik {name string privat; // hilangkan metode get/setter}Pertama, sesuaikan editor properti penulis:
Kelas Publik CustomPropertyEditor memperluas propertiEditorSupport {@Override public void setastext (string text) melempar IllegalArgumentException {if (text == null || text.length () == 0) {lempar baru illegalargumentException ("format kesalahan"); } Penulis penulis = penulis baru (); woriten.setname (teks); // Panggil metode kelas induk ke setValue (penulis); }} Jika Anda menggunakan BeanFactory, Anda harus secara manual menghubungi metode registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) untuk mendaftarkan Editor Properti Kustom; Jika Anda menggunakan ApplicationContext, Anda hanya perlu mendaftarkan CustomEditorConfigurer dalam file konfigurasi. CustomEditorConfigurer mengimplementasikan antarmuka BeanFactoryPostProcessor, jadi ini adalah pabrik postprocessor untuk kacang.
Sekarang Daftarkan Editor Properti Kustom:
<!-Daftarkan Editor Properti Kustom-> <Bean> <Property Name = "CustomEditors"> <pap> <!-Key: Tipe Properti; Nilai: Editor Properti-> <entry key = "net.deniro.spring4.editor.author" value = "net.deniro.spring4.editor.custompropertyeditor"/> </peta> </prively> </tean> <bean id = "Book"> <properti nama = "nama" value = "Kafka oleh The Laean" Properti "OCKETORT" name = "penulis" value = "haruki murakami"/> </t bean>
Saat mengatur properti penulis buku, Registry Editor Properti Kustom akan diambil. Ketika editor properti CustomPropertyEditor yang sesuai dengan jenis properti penulis ditemukan, itu akan mengubah "Haruki Murakami" menjadi objek penulis.
Menurut spesifikasi, Java akan mencari apakah kelas <JavaBean>Editor ada di bawah paket kelas Javabean yang sama; Jika ada, itu akan secara otomatis menggunakan <JavaBean>Editor sebagai editor properti JavaBean. Spring juga mendukung spesifikasi ini.
Jadi jika ada kelas editor properti bernama penulis di bawah paket kelas, maka tidak perlu mendaftarkan editor properti khusus dalam file konfigurasi o (∩_∩) o haha ~
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.