Saya ingin mengakses nilai yang disediakan application.properties
, misalnya:
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
logging.file=${HOME}/application.log
userBucket.path=${HOME}/bucket
Saya ingin mengakses userBucket.path
di program utama saya di aplikasi Boot Spring.
java
spring-boot
properties-file
Qasim
sumber
sumber
Environment
atau melalui@ConfigurationProperties
@Configuration
kelas, masalah dianalisis dengan baik di posting blog@Component
(atau salah satu turunannya, yaitu@Repository
, dll.)Cara lain adalah menyuntikkan
org.springframework.core.env.Environment
kacang Anda.sumber
org.springframework.core.env.Environment
@ConfigurationProperties
dapat digunakan untuk memetakan nilai dari.properties
(.yml
juga didukung) ke POJO.Pertimbangkan contoh file berikut ini.
.properti
Employee.java
Sekarang nilai properti dapat diakses dengan autowiring
employeeProperties
sebagai berikut.sumber
src/main/resources
jika Anda tidak menguji kode Anda dari uji Spring.Saat ini, saya tahu tentang tiga cara berikut:
1.
@Value
Anotasinull
. Misalnya, ketika Anda mencoba mengaturnya dalam suatupreConstruct()
metode atauinit()
metode. Ini terjadi karena injeksi nilai terjadi setelah kelas dibangun sepenuhnya. Inilah sebabnya mengapa lebih baik menggunakan opsi 3rd.2.
@PropertySource
AnotasiPropertySouce
menetapkan nilai dari file sumber properti dalamEnvironment
variabel (di kelas Anda) saat kelas dimuat. Jadi, Anda dapat mengambil kata penutup dengan mudah.3.
@ConfigurationProperties
Anotasi.Ini menginisialisasi entitas berdasarkan data properti.
@ConfigurationProperties
mengidentifikasi file properti untuk dimuat.@Configuration
membuat kacang berdasarkan variabel file konfigurasi.sumber
spring.config.location
? Apakah # 2 masih berfungsi?Anda dapat melakukannya dengan cara ini juga ....
Lalu di mana pun Anda ingin membaca dari application.properties, cukup kirimkan kunci ke metode getConfigValue.
sumber
Environment
?spring.config.location
?Anda dapat menggunakan
@Value
untuk memuat variabel dariapplication.properties
jika Anda akan menggunakan nilai ini di satu tempat, tetapi jika Anda memerlukan cara yang lebih terpusat untuk memuat variabel ini@ConfigurationProperties
adalah pendekatan yang lebih baik.Selain itu Anda dapat memuat variabel dan melemparkannya secara otomatis jika Anda memerlukan tipe data yang berbeda untuk melakukan validasi dan logika bisnis Anda.
sumber
ikuti langkah ini. 1: - buat kelas konfigurasi Anda seperti di bawah ini yang dapat Anda lihat
2: - ketika Anda memiliki kelas konfigurasi kemudian menyuntikkan dalam variabel dari konfigurasi di mana Anda butuhkan.
sumber
sumber
Aplikasi dapat membaca 3 jenis nilai dari file application.properties.
properti aplikasi
file kelas
Jika Anda tidak memiliki properti di application.properties maka Anda dapat menggunakan nilai default
sumber
Spring-boot memungkinkan kami beberapa metode untuk memberikan konfigurasi eksternal, Anda dapat mencoba menggunakan file application.yml atau yaml sebagai ganti file properti dan menyediakan pengaturan file properti yang berbeda sesuai dengan lingkungan yang berbeda.
Kami dapat memisahkan properti untuk setiap lingkungan menjadi file yml terpisah di bawah profil pegas yang terpisah. Kemudian selama penerapan Anda dapat menggunakan:
untuk menentukan profil pegas mana yang akan digunakan. Perhatikan bahwa file yml harus berupa nama
bagi mereka untuk secara otomatis diambil oleh springboot.
Referensi: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-profile-specific-properties-
Untuk membaca dari file application.yml atau properti:
Cara termudah untuk membaca nilai dari file properti atau yml adalah dengan menggunakan anotasi pegas @ nilai. Memutar secara otomatis memuat semua nilai dari yml ke lingkungan pegas, sehingga kami dapat langsung menggunakan nilai-nilai itu dari lingkungan seperti:
Atau metode lain yang disediakan pegas untuk membaca kacang yang sangat diketik adalah sebagai berikut:
POJO yang sesuai untuk membaca yml:
Metode di atas berfungsi baik dengan file yml.
Referensi: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
sumber
Bagi saya, tidak satu pun di atas yang secara langsung bekerja untuk saya. Apa yang saya lakukan adalah sebagai berikut:
Selain @Rodrigo Villalba Zayas menjawab di sana saya menambahkan
implements InitializingBean
ke kelasdan menerapkan metode
Sehingga akan terlihat seperti
sumber
Cara terbaik untuk mendapatkan nilai properti gunakan.
1. Menggunakan anotasi Nilai
2. Menggunakan kacang Enviornment
sumber
Yang terbaik adalah menggunakan
@Value
anotasi karena secara otomatis akan memberikan nilai pada objek Andaprivate Environment en
. Ini akan mengurangi kode Anda dan akan mudah untuk memfilter file Anda.sumber
Ada dua cara,
@Value
di kelas AndaATAU
@Configuration
kelas di mana Anda dapat menambahkan semua@value
sumber