Inicio rápido: Incorporación de marcas de características a una aplicación de Spring Boot

En este inicio rápido, incorporará Azure App Configuration en una aplicación web de Spring Boot para crear una implementación de un extremo a otro de administración de características. Puede usar el servicio App Configuration para almacenar en una ubicación central todas las marcas de características y controlar sus estados.

Las bibliotecas de administración de características de Spring Boot amplían el marco con una compatibilidad completa con las marcas de características. Estas bibliotecas no dependen de ninguna biblioteca de Azure. Se integran sin problemas con App Configuration mediante su proveedor de configuración de Spring Boot.

Prerrequisitos

Creación de una instancia de App Configuration

  1. Para crear un almacén de App Configuration, inicie sesión en Azure Portal. En la esquina superior izquierda de la página principal, seleccione Crear un recurso. En el cuadro Buscar en Marketplace, escriba App Configuration y presione Entrar.

    Buscar App Configuration

  2. Seleccione Configuración de la aplicación en los resultados de la búsqueda y, después, Crear.

    Seleccionar Crear

  3. En el panel Crear de App Configuration, introduzca la siguiente configuración:

    Configuración Valor sugerido Descripción
    Suscripción Su suscripción Seleccione la suscripción de Azure que desee usar para probar App Configuration. Si su cuenta solo tiene una suscripción, se selecciona automáticamente y la lista Suscripción no aparece.
    Grupos de recursos AppConfigTestResources Seleccione o cree un grupo de recursos para el recurso del almacén de App Configuration. Este grupo es útil para organizar los distintos recursos que quiera eliminar al mismo tiempo mediante la eliminación del grupo de recursos. Para más información, consulte Administración de los recursos de Azure a través del Portal.
    Nombre del recurso Nombre único globalmente Escriba un nombre de recurso único para usarlo como recurso de almacén de App Configuration. El nombre debe ser una cadena de entre 5 y 50 caracteres y solo puede contener números, letras y el carácter -. El nombre no puede comenzar ni terminar con el carácter -.
    Ubicación Centro de EE. UU. Use Ubicación para especificar la ubicación geográfica en la que se hospeda el almacén de App Configuration. Para optimizar el rendimiento, cree el recurso en la misma región que los demás componentes de la aplicación.
    Plan de tarifa Gratis Seleccione el plan de tarifa deseado. Para más información, consulte la página de precios de App Configuration.
  4. Seleccione Revisar y crear para validar la configuración.

  5. Seleccione Crear. La implementación puede tardar unos minutos.

  6. Una vez finalizada la implementación, vaya al recurso de App Configuration. Seleccione Configuración > Claves de acceso. Tome nota de la cadena de conexión de la clave de solo lectura principal. Usará esta cadena de conexión más adelante para configurar la aplicación y que se comunique con el almacén de Azure App Configuration que ha creado.

  1. Seleccione Administrador de características > +Agregar para agregar una marca de características denominada Beta.

    Habilitación de la marca de característica denominada Beta

    Deje label sin definir por ahora.

Creación de una aplicación Spring Boot

Para crear un proyecto de Spring Boot, use Spring Initializr.

  1. Vaya a https://start.spring.io/.

  2. Especifique las opciones siguientes:

    • Genere un proyecto de Maven con Java.
    • Especifique una versión de Spring Boot igual o superior a la 2.0.
    • Especifique los nombres de Group (Grupo) y Artifact (Artefacto) de la aplicación. En este artículo se usan com.example y demo.
    • Adición de la dependencia de Spring Web
  3. Después de especificar las opciones anteriores, seleccione Generar proyecto. Cuando se le solicite, descargue el proyecto en el equipo local.

Adición de la administración de características

  1. Después de extraer los archivos en el sistema local, la aplicación de Spring Boot estará lista para editarlos. Busque pom.xml en el directorio raíz de la aplicación.

  2. Abra el archivo pom.xml en un editor de texto y agregue lo siguiente a la lista de <dependencies>:

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-cloud-appconfiguration-config-web</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>azure-spring-cloud-feature-management-web</artifactId>
        <version>2.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    

Nota

Conexión a un almacén de App Configuration

  1. Vaya al directorio resources de la aplicación y abra bootstrap.properties. Si el archivo no existe, créelo. Agregue la siguiente línea al archivo.

    spring.cloud.azure.appconfiguration.stores[0].connection-string= ${APP_CONFIGURATION_CONNECTION_STRING}
    spring.cloud.azure.appconfiguration.stores[0].feature-flags.enabled=true
    
  2. En el portal de App Configuration del almacén de configuración, seleccione Access keysen la barra lateral. Seleccione la pestaña Claves de solo lectura. Copie el valor de la cadena de conexión principal.

  3. Agregue la cadena de conexión principal como variable de entorno y use el nombre de variable APP_CONFIGURATION_CONNECTION_STRING.

  4. Abra el archivo de Java de la aplicación principal y agregue @EnableConfigurationProperties para habilitar esta característica.

    package com.example.demo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @EnableConfigurationProperties(MessageProperties.class)
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }
    
  5. Cree un archivo Java llamado MessageProperties.javaº en el directorio del paquete de la aplicación.

    package com.example.demo;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ConfigurationProperties(prefix = "config")
    public class MessageProperties {
        private String message;
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    }
    
  6. Cree un archivo Java nuevo llamado HelloController.java en el directorio del paquete de la aplicación.

    package com.example.demo;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    
    import com.azure.spring.cloud.feature.manager.FeatureManager;
    import org.springframework.web.bind.annotation.GetMapping;
    
    
    @Controller
    @ConfigurationProperties("controller")
    public class HelloController {
    
        private FeatureManager featureManager;
    
        public HelloController(FeatureManager featureManager) {
            this.featureManager = featureManager;
        }
    
        @GetMapping("/welcome")
        public String mainWithParam(Model model) {
            model.addAttribute("Beta", featureManager.isEnabledAsync("Beta").block());
            return "welcome";
        }
    }
    
  7. Cree un archivo HTML llamado welcome.html en el directorio de plantillas de la aplicación.

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title>Feature Management with Spring Cloud Azure</title>
    
        <link rel="stylesheet" href="/css/main.css">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    
        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
    
    </head>
    <body>
        <header>
        <!-- Fixed navbar -->
        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <a class="navbar-brand" href="#">TestFeatureFlags</a>
            <button class="navbar-toggler" aria-expanded="false" aria-controls="navbarCollapse" aria-label="Toggle navigation" type="button" data-target="#navbarCollapse" data-toggle="collapse">
            <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarCollapse">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item" th:if="${Beta}">
                <a class="nav-link" href="#">Beta</a>
                </li>
                <li class="nav-item">
                <a class="nav-link" href="#">Privacy</a>
                </li>
            </ul>
            </div>
        </nav>
        </header>
        <div class="container body-content">
            <h1 class="mt-5">Welcome</h1>
            <p>Learn more about <a href="https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/appconfiguration/azure-spring-cloud-feature-management/README.md">Feature Management with Spring Cloud Azure</a></p>
    
        </div>
        <footer class="footer">
            <div class="container">
            <span class="text-muted">&copy; 2019 - Projects</span>
        </div>
    
        </footer>
    </body>
    </html>
    
    
  8. Cree una carpeta llamada CSS en static y dentro de ella un archivo CSS llamado main.css.

    html {
     position: relative;
     min-height: 100%;
    }
    body {
     margin-bottom: 60px;
    }
    .footer {
     position: absolute;
     bottom: 0;
     width: 100%;
     height: 60px;
     line-height: 60px;
     background-color: #f5f5f5;
    }
    
    body > .container {
     padding: 60px 15px 0;
    }
    
    .footer > .container {
     padding-right: 15px;
     padding-left: 15px;
    }
    
    code {
     font-size: 80%;
    }
    

Compilación y ejecución de la aplicación en un entorno local

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

    mvn clean package
    mvn spring-boot:run
    
  2. Abra una ventana del explorador y vaya a la dirección URL: http://localhost:8080/welcome.

    Captura de pantalla que muestra una ventana del explorador con un mensaje de bienvenida.

  3. En el portal de App Configuration, seleccione Feature Manager (Administrador de características) y cambie el estado de la clave Beta a On (Activado):

    Clave State
    Beta Por
  4. Actualice la página del explorador para ver los nuevos valores de configuración.

    Captura de pantalla que muestra una ventana del explorador con un mensaje de bienvenida y un vínculo de la versión beta resaltado.

Limpieza de recursos

Si no desea seguir usando los recursos creados en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.

Importante

La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
  2. En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
  3. En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
  4. Seleccione Eliminar grupo de recursos.
  5. Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.

Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.

Pasos siguientes

En este inicio rápido, ha creado un almacén de App Configuration y lo ha usado para administrar características en una aplicación web de Spring Boot mediante las bibliotecas de administración de características.