Saya memiliki jenis enum mandiri yang ditentukan, seperti ini:
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
Sekarang, saya ingin memasukkan nilai jenis itu ke dalam properti kacang:
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... dan itu tidak berhasil :(
Bagaimana cara menyuntikkan Enum ke dalam kacang pegas?
Gunakan elemen anak nilai sebagai ganti atribut nilai dan tentukan nama kelas Enum:
Keuntungan dari pendekatan ini dibandingkan hanya menulis
value="ALIEN"
adalah bahwa ia juga berfungsi jika Spring tidak dapat menyimpulkan tipe sebenarnya dari enum dari properti (misalnya tipe properti yang dideklarasikan adalah antarmuka). Diadaptasi dari komentar araqnid.sumber
Saya tahu ini adalah pertanyaan yang sangat lama, tetapi jika seseorang mencari cara baru untuk melakukan ini, gunakan namespace util musim semi:
Seperti yang dijelaskan dalam dokumentasi pegas .
sumber
Anda tinggal melakukan "TYPE1".
sumber
Inilah yang melakukannya untuk saya MessageDeliveryMode adalah enum kacang akan memiliki nilai PERSISTENT:
sumber
Menggunakan SPEL dan P-NAMESPACE:
sumber
Untuk lebih spesifik, setel nilai menjadi nama konstanta jenis enum, misalnya, "TYPE1" atau "TYPE2" dalam kasus Anda, seperti yang ditunjukkan di bawah ini. Dan itu akan berhasil:
sumber
Anda dapat menulis Editor Bean (detailnya ada di Spring Docs) jika Anda ingin menambahkan nilai lebih lanjut dan menulis ke tipe kustom.
sumber
Contoh integrasi pegas, perutean berdasarkan bidang Enum:
config:
sumber