Öğretici: Java Spring uygulamasında dinamik yapılandırmayı kullanma

Uygulama Yapılandırması Spring için iki kitaplığı vardır.

  • spring-cloud-azure-appconfiguration-config Spring Boot gerektirir ve üzerinde spring-cloud-contextbir bağımlılık alır.
  • spring-cloud-azure-appconfiguration-config-web Spring Boot ile birlikte Spring Web gerektirir ve ayrıca yapılandırma yenilemesinin otomatik denetimi için destek ekler.

Her iki kitaplık da yenilenen yapılandırma değerlerini denetlemek için el ile tetiklenmeyi destekler.

Yenileme, uygulamanızı yeniden başlatmak zorunda kalmadan yapılandırma değerlerinizi güncelleştirmenize olanak tanır ancak içindeki tüm çekirdeklerin @RefreshScope yeniden oluşturulmasına neden olur. Meta veriler de dahil olmak üzere yapılandırılmış tetikleyicilerde yapılan değişiklikleri denetler. Varsayılan olarak, değişiklik denetimleriyle yenileme aralığı arasındaki en düşük süre 30 saniye olarak ayarlanır.

spring-cloud-azure-appconfiguration-config-web'nin otomatik yenilemesi, özellikle Spring Web'in ServletRequestHandledEventetkinliğine göre tetiklenir. tetiklenmemişse ServletRequestHandledEvent , spring-cloud-azure-appconfiguration-config-webönbellek süre sonu süresi dolsa bile otomatik yenileme işlemi yenilemeyi tetiklemez.

El ile yenilemeyi kullanma

El ile yenilemeyi kullanmak için, Uygulama Yapılandırması için Spring Boot hızlı başlangıcını izleyerek oluşturduğunuz uygulama gibi Uygulama Yapılandırması kullanan bir Spring Boot uygulamasıyla başlayın.

Uygulama Yapılandırması, önbelleğin süresinin dolup dolmadığını denetlemek için kullanılabilen öğesini kullanıma sunarAppConfigurationRefresh. Süresi dolduysa yenileme tetiklenir.

  1. kullanmak AppConfigurationRefreshiçin HelloController'ı güncelleştirin.

    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();
        }
    }
    

    AppConfigurationRefresh's refreshConfigurations() , yenileme Mono tetiklendiyse true, tetiklenmediyse false değerini döndürür. False, önbellek süre sonu süresinin dolmadığı, herhangi bir değişiklik yapılmadığı veya başka bir iş parçacığının şu anda yenilemeyi denetlediği anlamına gelir.

  2. Yenilemeyi etkinleştirmek için güncelleştirin bootstrap.properties :

    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. Azure Portal'ı açın ve uygulamanızla ilişkilendirilmiş Uygulama Yapılandırması kaynağınıza gidin. İşlemler'in altında Yapılandırma Gezgini'ni seçin ve aşağıdaki parametreleri eklemek için + Anahtar-değer Oluştur'u>seçerek yeni bir anahtar-değer çifti oluşturun:

    Anahtar Değer
    sentinel 1

    Etiket ve İçerik Türü'nü şimdilik boş bırakın.

  4. Uygula’yı seçin.

  5. Spring Boot uygulamanızı Maven’le oluşturun ve çalıştırın.

    mvn clean package
    mvn spring-boot:run
    
  6. Bir tarayıcı penceresi açın ve URL'ye gidin: http://localhost:8080. Anahtarınızla ilişkili iletiyi görürsünüz.

    Uygulamanızı test etmek için curl de kullanabilirsiniz, örneğin:

    curl -X GET http://localhost:8080/
    
  7. Dinamik yapılandırmayı test etmek için uygulamanızla ilişkilendirilmiş Azure Uygulaması Yapılandırma portalını açın. Yapılandırma Gezgini'ni seçin ve görüntülenen anahtarınızın değerini güncelleştirin, örneğin:

    Anahtar Değer
    /application/config.message Merhaba - Güncelleştirildi
  8. Daha önce oluşturduğunuz sentinel anahtarını yeni bir değere güncelleştirin. Bu değişiklik, yenileme aralığı geçtikten sonra uygulamanın tüm yapılandırma anahtarlarını yenilemesini tetikler.

    Anahtar Değer
    sentinel 2
  9. Görüntülenen yeni iletiyi görmek için tarayıcı sayfasını iki kez yenileyin. Yenilemeyi ilk kez tetiklerken, ikincisi değişiklikleri yükler.

Not

Kitaplık yalnızca yenileme aralığı geçtikten sonra üzerindeki değişiklikleri denetler. Dönem geçmezse hiçbir değişiklik görüntülenmez. Dönemin geçmesini bekleyin ve yenileme denetimini tetikleyin.

Otomatik yenilemeyi kullanma

Otomatik yenilemeyi kullanmak için, Uygulama Yapılandırması için Spring Boot hızlı başlangıcını izleyerek oluşturduğunuz uygulama gibi Uygulama Yapılandırması kullanan bir Spring Boot uygulamasıyla başlayın.

Ardından, pom.xml dosyasını bir metin düzenleyicisinde açın ve aşağıdaki kodu kullanarak için spring-cloud-azure-appconfiguration-config-web ekleyin<dependency>.

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. Yenilemeyi etkinleştirmek için güncelleştir bootstrap.properties

    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. Azure Portal'ı açın ve uygulamanızla ilişkilendirilmiş Uygulama Yapılandırması kaynağınıza gidin. İşlemler'in altında Yapılandırma Gezgini'ni seçin ve aşağıdaki parametreleri eklemek için + Anahtar-değer Oluştur'u>seçerek yeni bir anahtar-değer çifti oluşturun:

    Anahtar Değer
    sentinel 1

    Etiket ve İçerik Türü'nü şimdilik boş bırakın.

  3. Uygula’yı seçin.

  4. Spring Boot uygulamanızı Maven’le oluşturun ve çalıştırın.

    mvn clean package
    mvn spring-boot:run
    
  5. Bir tarayıcı penceresi açın ve URL'ye gidin: http://localhost:8080. Artık anahtarınızla ilişkilendirilmiş iletiyi görürsünüz.

    Uygulamanızı test etmek için curl de kullanabilirsiniz, örneğin:

    curl -X GET http://localhost:8080/
    
  6. Dinamik yapılandırmayı test etmek için uygulamanızla ilişkilendirilmiş Azure Uygulaması Yapılandırma portalını açın. Yapılandırma Gezgini'ni seçin ve görüntülenen anahtarınızın değerini güncelleştirin, örneğin:

    Anahtar Değer
    /application/config.message Merhaba - Güncelleştirildi
  7. Daha önce oluşturduğunuz sentinel anahtarını yeni bir değere güncelleştirin. Bu değişiklik, yenileme aralığı geçtikten sonra uygulamanın tüm yapılandırma anahtarlarını yenilemesini tetikler.

    Anahtar Değer
    sentinel 2
  8. Görüntülenen yeni iletiyi görmek için tarayıcı sayfasını iki kez yenileyin. yenilemeyi ilk kez tetikler, ikinci istek özgün kapsamı kullanarak döndürdüğünden değişiklikleri yükler.

Not

Kitaplık yalnızca yenileme aralığı geçtikten sonra üzerindeki değişiklikleri denetler. Yenileme aralığı geçirilmemişse değişiklikleri denetlemez. Aralığın geçmesini bekleyin ve yenileme denetimini tetikleyin.

Sonraki adımlar

Bu öğreticide Spring Boot uygulamanızın yapılandırma ayarlarını Uygulama Yapılandırması dinamik olarak yenilemesini etkinleştirmişsiniz. Daha fazla soru için başvuru belgelerine bakın; Spring Cloud Azure Uygulaması Configuration kitaplığının nasıl çalıştığıyla ilgili tüm ayrıntılara sahiptir. Azure yönetilen kimliğini kullanarak Uygulama Yapılandırması erişimini kolaylaştırmayı öğrenmek için sonraki öğreticiye geçin.