Saya mencoba memuat array string dari file application.yml. Ini adalah konfigurasi:
ignore:
filenames:
- .DS_Store
- .hg
Ini kelasnya:
@Value("${ignore.filenames}")
private List<String> igonoredFileNames = new ArrayList<>();
Ada konfigurasi lain di kelas yang sama yang memuat dengan baik. Tidak ada tab di file yaml saya. Masih saya mendapatkan pengecualian berikut:
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"
spring-boot
Bahadır Yağan
sumber
sumber
@Value
(selama konverter terdaftar, yang akan di Spring Boot kurasa).@Configuration
, tetapi menggunakan@Component
bukan melakukan trik.@Component
lebih tepat: stackoverflow.com/questions/12229282/…gunakan nilai yang dipisahkan koma di application.yml
kode java untuk akses
Ini bekerja ;)
sumber
Dari spring boot docs https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
Daftar YAML direpresentasikan sebagai kunci properti dengan [index] dereferencers, misalnya YAML ini:
Akan diubah menjadi properti ini:
Untuk mengikat properti seperti itu menggunakan utilitas Spring DataBinder (yang berfungsi apa
@ConfigurationProperties
), Anda perlu memiliki properti di kacang tipe targetjava.util.List
dan Anda perlu menyediakan setter, atau menginisialisasi dengan nilai yang bisa berubah, misalnya ini akan mengikat ke properti di atas. Di sini akan terlihat seperti apa kode pertanyaan itu.sumber
getXxx()
diperlukan agar bisa berfungsi, dan harus menggunakanList
, bukanSet
.servers: ${my.servers}
:? Untuk masukmy.servers[0]
danmy.servers[1]
masuk ke ubi jalar? Saya mencoba untuk memiliki konfigurasi panggung tergantungSelain jawaban Ahmet, Anda dapat menambahkan jeda baris ke string yang dipisahkan koma menggunakan
>
simbol.application.yml :
Kode Java :
sumber
Jawaban Ahmet memberikan cara menetapkan nilai yang dipisahkan koma ke array String.
Untuk menggunakan konfigurasi di atas dalam kelas yang berbeda, Anda mungkin perlu membuat getter / setter untuk ini .. Tetapi jika Anda ingin memuat konfigurasi ini sekali dan terus menggunakan ini sebagai kacang dengan anotasi Autowired, berikut adalah cara yang saya lakukan:
Di ConfigProvider.java
Di kelas luar:
Anda dapat menggunakan daftar yang sama di mana pun dengan autowiring.
sumber
@Configuration
di awal kelasConfigProvider.java
. Kalau tidak, saya mendapatkan Sumber diperlukan kacang jenis 'java.util.List' yang tidak dapat ditemukan.file yml:
Ada banyak lagi yang bisa kamu mainkan dengan spring spEL.
sumber
Ya, satu-satunya hal yang bisa saya lakukan adalah:
Dan jangan lupa konfigurasi @ di atas kelas Anda ....
Tanpa pemisahan ",", tidak ada keberuntungan seperti itu ...
Bekerja juga (boot 1.5.8 versie)
sumber
Dalam kasus saya ini adalah masalah sintaksis dalam file .yml. Saya punya:
dan daftar di file .yml saya:
tidak membaca bidang isian @ Nilai. Ketika saya mengubah sintaks dalam file .yml ke:
itu bekerja dengan baik.
sumber
file yml:
sumber