Dalam aplikasi saya, saya memiliki kacang yang diberi anotasi @Profile("prod")
dan @Profile("demo")
. Yang pertama, seperti yang bisa Anda tebak :), digunakan pada bean yang terhubung ke DB produksi dan yang kedua memberi anotasi pada bean yang menggunakan DB palsu ( HashMap
atau apapun) - untuk mempercepat pengembangan.
Yang ingin saya miliki adalah profil default ( "prod"
) yang akan selalu digunakan jika tidak diganti dengan " sesuatu-lain ".
Sempurna untuk memiliki web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
dan kemudian menimpa ini dengan -Dspring.profiles.active="demo"
sehingga saya bisa melakukan:
mvn jetty:run -Dspring.profiles.active="demo".
Tapi sayangnya ini tidak berhasil. Tahu bagaimana saya bisa mencapai itu? Pengaturan -Dspring.profiles.active="prod"
di semua lingkungan saya bukanlah suatu pilihan.
Tentukan lingkungan produksi Anda sebagai profil default di web.xml Anda
dan jika Anda ingin menggunakan profil yang berbeda, teruskan sebagai properti sistem
sumber
spring.profiles.default=prod
diapplication.properties
, makaapplication-prod.properties
tidak akan dimuat. Ini kontra-intuitif.application.properties
file. Untuk mengetahui apa yangapplication-prod.properties
harus digunakan, Anda harus mengetahui profilnya. Itulah yang dilakukan pendekatan ini. Ini mendefinisikan profil di luar konteks pegas baikweb.xml
(default) atau melalui variabel lingkungan (menimpa default).application-default.properties
dimuat, saya juga berharap ituapplication-newdefault.properties
akan dimuat juga. Ini bukan masalah dengan solusi Anda, ini masalah dengan Spring ...Saya memiliki masalah yang sama, tetapi saya menggunakan WebApplicationInitializer untuk mengkonfigurasi ServletContext secara terprogram (Servlet 3.0+). Jadi saya melakukan hal berikut:
sumber
Anda juga dapat mempertimbangkan untuk menghapus profil PROD, dan menggunakan @Profile ("! Demo")
sumber
Tentang pengaturan profil produksi default sudah diposting @andih
Cara termudah untuk mengatur profil default untuk plugin maven jetty, adalah dengan memasukkan elemen di bawah ini ke dalam konfigurasi plugin Anda:
sumber
Pegas menyediakan dua properti terpisah saat menentukan profil mana yang aktif:
spring.profiles.active
dan
spring.profiles.default
Jika
spring.profiles.active
disetel, nilainya menentukan profil mana yang aktif. Namun jikaspring.profiles.active
tidak disetel, Spring akan memeriksanyaspring.profiles.default.
Jika tidak ada
spring.profiles.active
atauspring.profiles.default
disetel, maka tidak ada profil aktif, dan hanya kacang yang tidak didefinisikan sebagai profil yang dibuat. Kacang apa pun yang tidak menentukan profil adalah milikdefault
profil.sumber
Anda dapat mengatur web.xml Anda sebagai sumber daya yang difilter dan nilai ini diisi oleh maven dari pengaturan profil maven - itulah yang kami lakukan.
di pom filter semua sumber daya (Anda dapat melakukannya jika Anda tidak memiliki tanda $ {} di dalamnya)
di web.xml put
di pom buat profil maven
Sekarang Anda bisa menggunakan
atau cukup
-P DEMO
dengan perintah maven apa sajasumber