Öğretici: Java Spring uygulamasında dinamik yapılandırma 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 olarak denetlenebilir.

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

Yenileme, uygulamanızı yeniden başlatmanıza gerek kalmadan yapılandırma değerlerinizi güncelleştirmenizi sağlar, 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 denetimleri ve 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. bir ServletRequestHandledEvent tetiklenmezse, spring-cloud-azure-appconfiguration-config-webönbellek süre sonu süresi dolsa bile otomatik yenileme bir yenileme 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ı, AppConfigurationRefreshönbelleğin süresinin dolup dolmadığını ve süresinin dolup dolmadığını denetlemek için kullanılabilen bir yenileme tetiklenir.

  1. HelloController'ı kullanacak AppConfigurationRefreshşekilde 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 tetiklendiğinde true değerini, tetiklenmediyse false değerini döndürür Mono . False, önbellek süre sonu süresinin dolmadığı, değişiklik olmadığı veya başka bir iş parçacığının yenilemeyi denetlediği anlamına gelir.

  2. 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
    
  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 + Anahtar Değeri Oluştur'u> seçerek yeni biranahtar-değer çifti oluşturarak aşağıdaki parametreleri ekleyin:

    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şkili Azure Uygulama Yapılandırması 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 tetikler, ikincisi değişiklikleri yükler.

Not

Kitaplık yalnızca yenileme aralığı geçtikten sonra değişiklik olup olmadığını denetler; süre geçmezse hiçbir değişiklik görülmez, dönemin geçmesini beklemeniz ve yenileme denetimini tetiklemeniz gerekir.

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 + Anahtar Değeri Oluştur'u> seçerek yeni biranahtar-değer çifti oluşturarak aşağıdaki parametreleri ekleyin:

    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. 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/
    
  6. Dinamik yapılandırmayı test etmek için uygulamanızla ilişkili Azure Uygulama Yapılandırması 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. İlk istek özgün kapsamı kullanarak döndürdüğünden yenileme ilk kez tetiklenir, ikinci değişiklik yüklenir.

Not

Kitaplık yalnızca yenileme aralığı geçtikten sonra üzerindeki değişiklikleri denetler. Yenileme aralığı geçirilmediyse değişiklikleri denetlemez, aralığın geçmesini beklemeniz ve yenileme denetimini tetiklemeniz gerekir.

Sonraki adımlar

Bu öğreticide Spring Boot uygulamanızın yapılandırma ayarlarını Uygulama Yapılandırması dinamik olarak yenilemesini sağladınız. Daha fazla soru için başvuru belgelerine bakın; Spring Cloud Azure Uygulama Yapılandırması 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şimi kolaylaştırmayı öğrenmek için sonraki öğreticiye geçin.