Tutorial: Menggunakan konfigurasi dinamis di aplikasi Java Spring

Azure App Configuration memiliki dua pustaka untuk Spring.

  • spring-cloud-azure-appconfiguration-config membutuhkan Spring Boot dan mengambil dependensi pada spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-web memerlukan Spring Web disertai Spring Boot, dan juga menambahkan dukungan untuk pemeriksaan otomatis refresh konfigurasi.

Kedua pustaka mendukung pemicu manual untuk memeriksa nilai konfigurasi yang direfresh.

Refresh memungkinkan Anda memperbarui nilai konfigurasi tanpa harus menghidupkan ulang aplikasi Anda, meskipun menyebabkan semua buncis dalam @RefreshScope dibuat ulang. Ini memeriksa setiap perubahan pada pemicu yang dikonfigurasi, termasuk metadata. Secara default, jumlah waktu minimum antara pemeriksaan perubahan, interval refresh, diatur ke 30 detik.

Refresh otomatis spring-cloud-azure-appconfiguration-config-web dipicu berdasarkan aktivitas, terutama ServletRequestHandledEvent Spring Web. ServletRequestHandledEvent Jika tidak dipicu, spring-cloud-azure-appconfiguration-config-webrefresh otomatis tidak memicu refresh meskipun waktu kedaluwarsa cache telah kedaluwarsa.

Gunakan penyegaran manual

Untuk menggunakan refresh manual, mulai dengan aplikasi Spring Boot yang menggunakan App Configuration, seperti aplikasi yang Anda buat dengan mengikuti Mulai cepat Spring Boot untuk App Configuration.

App Configuration mengekspos AppConfigurationRefresh, yang dapat digunakan untuk memeriksa apakah cache kedaluwarsa dan apakah kedaluwarsa refresh dipicu.

  1. Perbarui HelloController untuk menggunakan AppConfigurationRefresh.

    import com.azure.spring.cloud.config.AppConfigurationRefresh;
    
    @RestController
    public class HelloController {
        private final MessageProperties properties;
    
        @Autowired(required = false)
        private AppConfigurationRefresh refresh;
    
        public HelloController(MessageProperties properties) {
            this.properties = properties;
        }
    
        @GetMapping
        public String getMessage() throws InterruptedException, ExecutionException {
            if (refresh != null) {
                refresh.refreshConfigurations();
            }
            return "Message: " + properties.getMessage();
        }
    }
    

    refreshConfigurations()AppConfigurationRefresh mengembalikan Mono benar jika penyegaran telah dipicu, dan salah jika tidak. Salah berarti waktu kedaluwarsa cache belum habis, tidak ada perubahan, atau utas lain saat ini sedang memeriksa penyegaran.

  2. Melakukan pembaruan bootstrap.properties untuk mengaktifkan refresh

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
    
  3. Buka Portal Microsoft Azure dan buka sumber daya App Configuration yang terkait dengan Aplikasi Anda. Pilih Penjelajah Konfigurasi di bawah Operasi dan buat pasangan kunci-nilai baru dengan memilih +Buat>Nilai-kunci untuk menetapkan parameter berikut:

    Kunci Nilai
    sentinel 1

    Biarkan Label dan Jenis Konten kosong untuk saat ini.

  4. Pilih Terapkan.

  5. Bangun aplikasi Spring Boot Anda dengan Maven dan jalankan.

    mvn clean package
    mvn spring-boot:run
    
  6. Buka jendela browser, dan buka URL: http://localhost:8080. Anda akan melihat pesan yang terkait dengan kunci Anda.

    Anda juga dapat menggunakan curl untuk menguji aplikasi Anda, misalnya:

    curl -X GET http://localhost:8080/
    
  7. Untuk menguji konfigurasi dinamis, buka portal Azure App Configuration yang terkait dengan aplikasi Anda. Pilih Explorer Konfigurasi, dan perbarui nilai kunci Anda yang ditampilkan, misalnya:

    Kunci Nilai
    /application/config.message Halo - Diperbarui
  8. Perbarui kunci sentinel yang Anda buat sebelumnya ke nilai baru. Perubahan ini memicu aplikasi untuk me-refresh semua kunci konfigurasi setelah interval refresh berlalu.

    Kunci Nilai
    Sentinel 2
  9. Refresh halaman browser dua kali untuk melihat pesan baru yang ditampilkan. Yang pertama memicu refresh, dan yang kedua memuat perubahan.

Catatan

Pustaka hanya memeriksa perubahan setelah interval refresh berlalu, jika periode belum berlalu, perubahan tidak akan terlihat, Anda harus menunggu hingga periode berlalu, lalu memicu pemeriksaan refresh.

Menggunakan penyegaran otomatis

Untuk menggunakan penyegaran otomatis, mulai dengan aplikasi Spring Boot yang menggunakan Azure App Configuration, seperti aplikasi yang Anda buat dengan mengikuti mulai cepat Spring Boot untuk Azure App Configuration.

Kemudian, buka file pom.xml di editor teks, dan tambahkan <dependency> untuk spring-cloud-azure-appconfiguration-config-web menggunakan kode berikut.

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. Melakukan pembaruan bootstrap.properties untuk mengaktifkan refresh

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
    
  2. Buka Portal Microsoft Azure dan buka sumber daya App Configuration yang terkait dengan Aplikasi Anda. Pilih Penjelajah Konfigurasi di bawah Operasi dan buat pasangan kunci-nilai baru dengan memilih +Buat>Nilai-kunci untuk menetapkan parameter berikut:

    Kunci Nilai
    sentinel 1

    Biarkan Label dan Jenis Konten kosong untuk saat ini.

  3. Pilih Terapkan.

  4. Bangun aplikasi Spring Boot Anda dengan Maven dan jalankan.

    mvn clean package
    mvn spring-boot:run
    
  5. Buka jendela browser, dan buka URL: http://localhost:8080. Anda akan melihat pesan yang terkait dengan kunci Anda.

    Anda juga dapat menggunakan curl untuk menguji aplikasi Anda, misalnya:

    curl -X GET http://localhost:8080/
    
  6. Untuk menguji konfigurasi dinamis, buka portal Azure App Configuration yang terkait dengan aplikasi Anda. Pilih Explorer Konfigurasi, dan perbarui nilai kunci Anda yang ditampilkan, misalnya:

    Kunci Nilai
    /application/config.message Halo - Diperbarui
  7. Perbarui kunci sentinel yang Anda buat sebelumnya ke nilai baru. Perubahan ini memicu aplikasi untuk me-refresh semua kunci konfigurasi setelah interval refresh berlalu.

    Kunci Nilai
    Sentinel 2
  8. Refresh halaman browser dua kali untuk melihat pesan baru yang ditampilkan. Yang pertama memicu refresh, yang kedua memuat perubahan, karena permintaan pertama ditampilkan menggunakan cakupan asli.

Catatan

Pustaka hanya memeriksa perubahan setelah interval refresh berlalu. Jika interval refresh belum berlalu, perubahan tidak akan diperiksa, Anda harus menunggu hingga interval berlalu, lalu memicu pemeriksaan refresh.

Langkah berikutnya

Dalam tutorial ini, Anda mengaktifkan aplikasi Spring Boot Anda untuk secara dinamis merefresh pengaturan konfigurasi dari Azure App Configuration. Untuk pertanyaan lebih lanjut, lihat dokumentasi referensi, dokumentasi ini berisi semua detail tentang cara kerja pustaka Spring Cloud Azure App Configuration. Untuk mempelajari cara menggunakan identitas terkelola Azure untuk mempermudah akses ke Azure App Configuration, lanjutkan ke tutorial berikutnya.