Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 25865|Jawab: 0

[Sumber] Spring Boot membaca (application.yml) nilai file konfigurasi

[Salin tautan]
Diposting pada 07/01/2019 15.37.14 | | | |
Profil konfigurasi application.yml pertama adalah sebagai berikut:



Proyek Maven pom.xml menambahkan paket:




Buat objek baru yang dipetakan dengan kode berikut:

Jenis string harus memerlukan setter untuk menerima nilai properti; Peta, koleksi, dan array tidak diperlukan

Gunakan anotasi @Autowired untuk menyuntikkan secara otomatis, seperti yang ditunjukkan pada gambar berikut:



esConfig selalu mengeluarkan null, mencari solusi untuk waktu yang lama, tetapi gagal, akan ada solusi di bawah ini.

Mari kita buat pengontrol baru, kodenya adalah sebagai berikut:

Injeksi berhasil, dan nilai file konfigurasi yml diperoleh secara normal, sebagai berikut:



Alasan mengapa EsClient tidak dapat berhasil disuntikkan adalah sebagai berikut:

Panggil fungsi kelas ini di konstruktor, dan variabel @Autowired kelas ini digunakan dalam fungsi ini.

Jadi saya pikir itu mungkin salah. Karena @Autowired harus menunggu kelas dibangun sebelum dapat diatur dari referensi eksternal. Oleh karena itu, waktu injeksi @Autowired harus lebih lambat dari waktu eksekusi konstruktor.
Larutan:

Tim Musim Semi merekomendasikan "Selalu gunakan injeksi dependensi berbasis konstruktor di kacang Anda. Selalu gunakan pernyataan untuk dependensi wajib".

Terjemahan:

Spring menyarankan: "Selalu tetapkan injeksi ketergantungan dengan konstruktor di kacang Anda. selalu gunakan pernyataan untuk memaksa ketergantungan".


Tulisan asli:

Tulisan yang dimodifikasi:



PS: Urutan inisialisasi variabel Java adalah: variabel statis atau blok pernyataan statis – variabel > instance atau blok pernyataan inisialisasi – metode >konstruksi – >@Autowired

Jadi mengapa menambahkan tipe akhir ke variabel anggota?

Ada penjelasan di Internet sebagai berikut: Ruang lingkup kacang default dalam konfigurasi pegas adalah singleton, yang selalu ada setelah startup. Deklarasikan objek bean untuk dibuat secara dinamis dengan mengatur properti cakupan ke prototipe. Namun, jika layanan Anda sendiri adalah singleton, injeksi hanya dijalankan sekali.

@Autowired itu sendiri adalah mode singleton, itu hanya akan dijalankan sekali saat program dimulai, dan tidak akan menginisialisasi untuk kedua kalinya meskipun tidak menentukan final, jadi final ini tidak ada artinya.

Ini mungkin untuk mencegah konstruktor dieksekusi lagi saat program sedang berjalan;

Atau mungkin lebih mudah dipahami, ditambah final hanya akan diinisialisasi sekali saat program dimulai.






Mantan:Spring Boot+maven untuk membangun proyek dengan cepat
Depan:Memorabilia Internet China 2018 dirilis
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com