Compartir vía


Tutorial: Uso de la configuración dinámica en una aplicación de Java Spring

App Configuration tiene dos bibliotecas para Spring.

  • spring-cloud-azure-appconfiguration-config requiere Spring Boot y tiene una dependencia de spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-web requiere Spring Web junto con Spring Boot y también agrega compatibilidad para la comprobación automática de la actualización de configuración.

Ambas bibliotecas admiten el desencadenamiento manual para comprobar los valores de configuración actualizados.

La actualización permite actualizar los valores de configuración sin tener que reiniciar la aplicación, aunque hará que se vuelvan a crear todas los beans de @RefreshScope. Comprueba si hay cambios en los desencadenadores configurados, incluidos los metadatos. De manera predeterminada, la cantidad mínima de tiempo entre las comprobaciones de cambios, el intervalo de actualización, se establece en 30 segundos.

La actualización automatizada de spring-cloud-azure-appconfiguration-config-web se desencadena en función de la actividad, específicamente de ServletRequestHandledEvent de Spring Web. Si no se desencadena un evento ServletRequestHandledEvent, la actualización automatizada spring-cloud-azure-appconfiguration-config-web no desencadena una actualización aunque haya expirado la fecha de expiración de la caché.

Uso de la actualización manual

Para usar la actualización manual, comience con una aplicación de Spring Boot que usa App Configuration, como la aplicación que se crea siguiendo las indicaciones del inicio rápido de Spring Boot con App Configuration.

App Configuration proporciona AppConfigurationRefresh, que verifica si ha pasado el intervalo de actualización. Si se ha pasado el intervalo de actualización, se desencadena una actualización.

  1. Para usar AppConfigurationRefresh, actualice HelloController.

    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 de refreshConfigurations() devuelve un Mono que es true si se desencadena una actualización y false si no es así. False significa que el tiempo de expiración de la caché no ha expirado, no se ha producido ningún cambio u otro subproceso está comprobando actualmente una actualización.

    Nota:

    Para bibliotecas como Spring WebFlux que requieren llamadas sin bloqueo, refreshConfigurations() debe encapsularse en un subproceso, ya que las configuraciones de carga requieren una llamada de bloqueo.

    new Thread(() -> refresh.refreshConfigurations()).start();
    
  2. Para habilitar la actualización de 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. Abra Azure Portal y vaya al recurso de App Configuration asociado a la aplicación. Seleccione Explorador de configuración en Operaciones y, después, + Crear>Par clave-valor para crear un par clave-valor y agregar los parámetros siguientes:

    Clave Importancia
    sentinel 1

    Deje Etiqueta y Tipo de contenido en blanco, por ahora.

  4. Seleccione Aplicar.

  5. Compile la aplicación de Spring Boot con Maven y ejecútela.

    mvn clean package
    mvn spring-boot:run
    
  6. Abra una ventana del explorador y vaya a la dirección URL: http://localhost:8080. Verá el mensaje asociado a la clave.

    También puede usar curl para probar la aplicación, por ejemplo:

    curl -X GET http://localhost:8080/
    
  7. Para probar la configuración dinámica, abra el portal de Azure App Configuration asociado a la aplicación. Seleccione Explorador de configuración y actualice el valor de la clave que se muestra, por ejemplo:

    Clave Importancia
    /application/config.message Hello: actualizado
  8. Actualice a un nuevo valor la clave de Sentinel que ha creado antes. Este cambio hace que la aplicación actualice todas las claves de configuración una vez que haya transcurrido el intervalo de actualización.

    Clave Importancia
    sentinel 2
  9. Actualice la página del explorador dos veces para ver el nuevo mensaje que se muestra. La primera vez desencadena la actualización, la segunda carga los cambios.

    Nota:

    La biblioteca comprueba si hay cambios solo después de que se supere el intervalo de actualización. Si no se ha superado el intervalo de actualización, no comprueba si hay cambios. Espere a que pase el intervalo y luego desencadene la comprobación de actualización.

Uso de la actualización automatizada

Para usar la actualización automatizada, comience con una aplicación de Spring Boot que usa App Configuration, como la aplicación que se crea siguiendo las indicaciones del inicio rápido de Spring Boot con App Configuration.

Después, abra el archivo pom.xml en un editor de texto y agregue <dependency> para spring-cloud-azure-appconfiguration-config-web mediante el código siguiente.

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>6.0.0</version>
</dependency>
  1. Para habilitar la actualización de application.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. Abra Azure Portal y vaya al recurso de App Configuration asociado a la aplicación. Seleccione Explorador de configuración en Operaciones y, después, + Crear>Par clave-valor para crear un par clave-valor y agregar los parámetros siguientes:

    Clave Importancia
    sentinel 1

    Deje Etiqueta y Tipo de contenido en blanco, por ahora.

  3. Seleccione Aplicar.

  4. Compile la aplicación de Spring Boot con Maven y ejecútela.

    mvn clean package
    mvn spring-boot:run
    
  5. Abra una ventana del explorador y vaya a la dirección URL: http://localhost:8080. Ahora verá el mensaje asociado a la clave.

    También puede usar curl para probar la aplicación, por ejemplo:

    curl -X GET http://localhost:8080/
    
  6. Para probar la configuración dinámica, abra el portal de Azure App Configuration asociado a la aplicación. Seleccione Explorador de configuración y actualice el valor de la clave que se muestra, por ejemplo:

    Clave Importancia
    /application/config.message Hello: actualizado
  7. Actualice a un nuevo valor la clave de Sentinel que ha creado antes. Este cambio hace que la aplicación actualice todas las claves de configuración una vez que haya transcurrido el intervalo de actualización.

    Clave Importancia
    sentinel 2
  8. Actualice la página del explorador dos veces para ver el nuevo mensaje que se muestra. La primera vez desencadena la actualización, la segunda carga los cambios, ya que la primera solicitud devuelve mediante el ámbito original.

    Nota:

    La biblioteca comprueba si hay cambios solo después de que se supere el intervalo de actualización. Si no se ha superado el intervalo de actualización, no comprueba si hay cambios. Espere a que pase el intervalo y luego desencadene la comprobación de actualización.

Pasos siguientes

En este tutorial, ha habilitado la aplicación de Spring Boot para actualizar dinámicamente la configuración a partir de App Configuration. Puede encontrar más preguntas en la documentación de referencia, que contiene todos los detalles sobre cómo funciona la biblioteca de Azure App Configuration de Spring Cloud. Para obtener información sobre cómo usar una identidad administrada de Azure para simplificar el acceso a App Configuration, vaya al siguiente tutorial.