Saya menggunakan Spring untuk menentukan tahapan dalam aplikasi saya. Ini dikonfigurasi bahwa kelas yang diperlukan (di sini disebut Configurator
) disuntikkan dengan tahapan.
Sekarang saya perlu Daftar Tahapan di kelas lain, bernama LoginBean
. The Configurator
tidak menawarkan akses ke Daftar Tahapannya.
Saya tidak bisa mengubah kelas Configurator
.
Ide Saya:
Tentukan kacang baru yang disebut Tahapan dan suntikkan ke Configurator
dan LoginBean
. Masalah saya dengan ide ini adalah saya tidak tahu bagaimana mengubah properti ini:
<property ...>
<list>
<bean ... >...</bean>
<bean ... >...</bean>
<bean ... >...</bean>
</list>
</property>
menjadi kacang.
Sesuatu seperti ini tidak berfungsi:
<bean id="stages" class="java.util.ArrayList">
Adakah yang bisa membantu saya dengan ini?
<property name="beanList" ref="myList"/>
@Autwired
tidak membantu ketika menyuntikkan daftar yang dibuat dengan cara ini. Namun,@Resource
berhasil. yaitu@Resource List<String> myList
Berikut ini satu metode:
sumber
StageClass
deklarasi kacang dalam<list>
menghindari kebutuhan akan<ref>
elemen.Pilihan lain adalah menggunakan JavaConfig. Dengan asumsi bahwa semua tahap sudah terdaftar sebagai kacang hijau, Anda hanya perlu:
dan pegas akan secara otomatis memasukkannya ke dalam daftar ini. Jika Anda perlu mempertahankan pesanan (solusi teratas tidak melakukan itu), Anda dapat melakukannya dengan cara itu:
Solusi lain untuk menjaga ketertiban adalah menggunakan
@Order
anotasi pada kacang. Kemudian daftar akan berisi kacang yang dipesan dengan nilai penjelasan naik.sumber
Dan di SomeClass:
sumber
Stacker mengajukan jawaban yang bagus, saya akan melangkah lebih jauh untuk membuatnya lebih dinamis dan menggunakan Spring 3 EL Expression.
Saya mencoba mencari tahu bagaimana saya bisa melakukan ini dengan daftar util: tapi tidak bisa berfungsi karena kesalahan konversi.
sumber
Saya pikir Anda mungkin mencari
org.springframework.beans.factory.config.ListFactoryBean
.Anda mendeklarasikan instance ListFactoryBean, memberikan daftar untuk dipakai sebagai properti dengan
<list>
elemen sebagai nilainya, dan memberikan kacangid
atribut. Kemudian, setiap kali Anda menggunakan yang dinyatakanid
sebagairef
atau serupa di beberapa pernyataan kacang lainnya, salinan baru dari daftar akan dipakai. Anda juga dapat menentukanList
kelas yang akan digunakan.sumber
tentukan kacang itu (test1, test2) sesudahnya :)
sumber
Gunakan namespace util, Anda akan dapat mendaftarkan daftar sebagai kacang dalam konteks aplikasi Anda. Anda kemudian dapat menggunakan kembali daftar untuk menyuntikkannya dalam definisi kacang lainnya.
sumber
Sebagai tambahan untuk jawaban Jakub, jika Anda berencana untuk menggunakan JavaConfig, Anda juga dapat autowire seperti itu:
sumber
Anda cukup menghapus
id
kacang di dalam<list>
tag. Seperti ini:sumber
Dan ini adalah cara menyuntikkan set di beberapa properti di Spring:
sumber
Suntikkan daftar string.
Misalkan Anda memiliki kelas model Negara yang mengambil daftar string seperti di bawah ini.
Mengikuti definisi xml, tentukan daftar negara yang disuntik dan disuntik.
Tautan referensi
Suntikkan daftar Pojo
Misalkan jika Anda memiliki kelas model seperti di bawah ini.
Definisi Bean.
Tautan Referensi .
sumber