Kami sedang menulis sebuah aplikasi yang dibagi menjadi beberapa proyek / modul. Misalnya, mari kita ambil modul berikut:
- myApp-DAO
- myApp-jabber
Setiap modul memiliki file xml konteks Musim Semi sendiri. Untuk modul DAO saya memiliki PropertyPlaceholderConfigurer yang membaca file properti dengan parameter koneksi db yang diperlukan. Dalam modul jabber saya juga memiliki PropertyPlaceHolderConfigurer untuk properti koneksi jabber.
Sekarang hadir aplikasi utama yang mencakup myApp-DAO dan myApp-jabber. Itu membaca semua file konteks dan memulai satu konteks Spring yang besar. Sayangnya, tampaknya hanya ada satu PropertyPlaceholderConfigurer per konteks, jadi modul mana pun yang dimuat lebih dulu dapat membaca parameter koneksinya. Yang lain melontarkan pengecualian dengan kesalahan seperti "Tidak dapat menyelesaikan placeholder 'jabber.host'"
Saya agak mengerti apa masalahnya, tetapi saya tidak benar-benar tahu solusinya - atau praktik terbaik untuk kasus penggunaan saya.
Bagaimana saya mengkonfigurasi setiap modul sehingga masing-masing dapat memuat file propertinya sendiri? Saat ini saya telah memindahkan PropertyPlaceHolderConfigurer dari file konteks terpisah dan menggabungkannya ke dalam konteks aplikasi utama (memuat semua file properti dengan satu PropertyPlaceHolderConfigurer). Ini menyebalkan, karena sekarang setiap orang yang menggunakan modul dao harus tahu, bahwa mereka membutuhkan PropertyPlaceHolderConfigurer dalam konteksnya .. juga tes integrasi dalam modul dao gagal dll.
Saya ingin tahu tentang solusi / ide dari komunitas stackoverflow ..
sumber
ignore-unresolvable="true"
, jika tidak perlu.ignoreUnresolvablePlaceholders
? Apa placeholder yang tidak bisa diselesaikan?PropertySourcesPlaceholderConfigurer
adalah implementasi dukungan default sejak Spring 3.1, jadi lebih masuk akal untuk digunakan daripadaPropertyPlaceholderConfigurer
sebagai kelas implementasi kacang.Saya tahu bahwa ini adalah pertanyaan lama, tetapi
ignore-unresolvable
properti itu tidak berfungsi untuk saya dan saya tidak tahu mengapa.Masalahnya adalah saya membutuhkan sumber daya eksternal (seperti
location="file:${CATALINA_HOME}/conf/db-override.properties"
) danignore-unresolvable="true"
tidak melakukan pekerjaan dalam kasus ini.Apa yang perlu dilakukan untuk mengabaikan sumber daya eksternal yang hilang adalah:
Kalau-kalau ada orang lain yang menabrak ini.
sumber
ignore-unresolvable
danignore-resource-not-found
melayani tujuan yang berbeda. Untuk mencegah kesalahan ketika file properti tidak ada, gunakanignore-resource-not-found="true"
. Untuk mencegah kesalahan saat Anda menggunakan properti yang tidak ada di file , gunakanignore-unresolvable="true"
. Jika Anda memiliki beberapa file yang masing-masing berisi kumpulan properti parsial, dan setiap file mungkin ada atau mungkin tidak ada, Anda perlu menggunakan keduanya.Anda dapat memiliki banyak
<context:property-placeholder />
elemen alih-alih mendeklarasikan beberapa kacang PropertiesPlaceholderConfigurer secara eksplisit.sumber
The
PropertiesPlaceholderConfigurer
kacang memiliki properti alternatif yang disebut "propertiesArray". Gunakan ini sebagai ganti properti "properti", dan konfigurasikan dengan<array>
referensi properti.sumber
Saya mencoba solusi di bawah ini, ini berfungsi pada mesin saya.
sumber: http://www.baeldung.com/2012/02/06/properties-with-spring/
sumber