Konfigurasi Spring YAML

1. Gambaran keseluruhan

Salah satu cara untuk mengkonfigurasi aplikasi Spring adalah menggunakan fail konfigurasi YAML.

Dalam artikel ringkas ini, kami akan mengkonfigurasi profil yang berbeza untuk aplikasi Spring Boot sederhana menggunakan YAML.

2. Spring YAML Fail

Profil spring membantu membolehkan Aplikasi Spring untuk menentukan sifat yang berbeza untuk persekitaran yang berbeza.

Berikut adalah fail YAML ringkas yang mengandungi dua profil. Ketiga-tiga tanda pisah yang memisahkan dua profil menunjukkan permulaan dokumen baru sehingga semua profil dapat dijelaskan dalam fail YAML yang sama.

Jalan relatif fail application.yml adalah /myApplication/src/main/resources/application.yml.

Aplikasi Spring mengambil profil pertama sebagai profil lalai kecuali dinyatakan sebaliknya dalam aplikasi Spring.

spring: config: activate: on-profile: test name: test-YAML environment: testing enabled: false servers: - www.abc.test.com - www.xyz.test.com --- spring: config: activate: on-profile: prod name: prod-YAML environment: production enabled: true servers: - www.abc.com - www.xyz.com

3. Mengikat YAML ke Kelas Config

Untuk memuatkan sekumpulan sifat yang berkaitan dari fail sifat, kami akan membuat kelas kacang:

@Configuration @EnableConfigurationProperties @ConfigurationProperties public class YAMLConfig { private String name; private String environment; private boolean enabled; private List servers = new ArrayList(); // standard getters and setters }

Anotasi yang digunakan di sini adalah:

  • @Configuration menandakan kelas sebagai sumber definisi kacang
  • @ConfigurationProperties mengikat dan mengesahkan konfigurasi luaran ke kelas konfigurasi
  • @EnableConfigurationProperties anotasi ini digunakan untuk membolehkan @ConfigurationProperties anotasi kacang dalam aplikasi Spring

4. Mengakses YAML Properties

Untuk mengakses sifat YAML, kami membuat objek kelas YAMLConfig dan mengakses sifat menggunakan objek itu.

Dalam fail sifat, mari tetapkan pemboleh ubah persekitaran spring.active.profiles ke prod . Sekiranya kita tidak menentukan spring.profiles.active, ia akan menjadi sifat profil pertama yang ditentukan dalam fail YAML.

Laluan relatif untuk fail sifat adalah /myApplication/src/main/resources/application.properties.

spring.profiles.active=prod

Dalam contoh ini, kami memaparkan sifat menggunakan CommandLineRunner.

@SpringBootApplication public class MyApplication implements CommandLineRunner { @Autowired private YAMLConfig myConfig; public static void main(String[] args) { SpringApplication app = new SpringApplication(MyApplication.class); app.run(); } public void run(String... args) throws Exception { System.out.println("using environment: " + myConfig.getEnvironment()); System.out.println("name: " + myConfig.getName()); System.out.println("enabled:" + myConfig.isEnabled()); System.out.println("servers: " + myConfig.getServers()); } }

Keluaran pada baris arahan:

using environment: production name: prod-YAML enabled: true servers: [www.abc.com, www.xyz.com]

5. Harta Benda YAML

Dalam Spring Boot, fail YAML boleh diganti oleh fail sifat YAML yang lain.

Sebelum versi 2.4.0, sifat YAML diganti oleh fail sifat di lokasi berikut, mengikut urutan keutamaan tertinggi pertama:

  • Sifat-sifat profil diletakkan di luar balang yang dibungkus
  • Sifat-sifat profil yang dibungkus di dalam balang yang dibungkus
  • Sifat aplikasi diletakkan di luar balang yang dibungkus
  • Sifat aplikasi yang dibungkus di dalam balang yang dibungkus

Pada Spring Boot 2.4, fail luaran selalu menggantikan fail yang dibungkus, tidak kira sama ada profilnya khusus atau tidak.

6. Kesimpulannya

Dalam artikel ringkas ini, kami telah melihat bagaimana mengkonfigurasi sifat dalam aplikasi Spring Boot menggunakan YAML. Kami juga telah melihat peraturan yang mengatasi harta itu diikuti oleh Spring Boot untuk fail YAML.

Kod untuk artikel ini terdapat di GitHub.