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
- Una suscripción a Azure: cree una cuenta gratuita
- Un SDK de Java Development Kitadmitido con la versión 8.
- Apache Maven, versión 3.0 o posterior.
Creación de una instancia de App Configuration
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.

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

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. Seleccione Revisar y crear para validar la configuración.
Seleccione Crear. La implementación puede tardar unos minutos.
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.
Seleccione Administrador de características > +Agregar para agregar una marca de características denominada
Beta.
Deje
labelsin definir por ahora.
Creación de una aplicación Spring Boot
Para crear un proyecto de Spring Boot, use Spring Initializr.
Vaya a https://start.spring.io/.
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.exampleydemo. - Adición de la dependencia de Spring Web
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
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.
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
- Si necesita compatibilidad con una versión anterior de Spring Boot, consulte nuestra antigua biblioteca de appconfiguration y nuestra antigua biblioteca de marcas de características.
- Hay una biblioteca de administración de características que no es web y que no tiene ninguna dependencia de Spring-Web. Consulte la documentación de GitHub para conocer las diferencias.
Conexión a un almacén de App Configuration
Vaya al directorio
resourcesde la aplicación y abrabootstrap.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=trueEn 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.Agregue la cadena de conexión principal como variable de entorno y use el nombre de variable
APP_CONFIGURATION_CONNECTION_STRING.Abra el archivo de Java de la aplicación principal y agregue
@EnableConfigurationPropertiespara 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); } }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; } }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"; } }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">© 2019 - Projects</span> </div> </footer> </body> </html>Cree una carpeta llamada CSS en
staticy 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
Compile la aplicación de Spring Boot con Maven y ejecútela.
mvn clean package mvn spring-boot:runAbra una ventana del explorador y vaya a la dirección URL:
http://localhost:8080/welcome.
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 Actualice la página del explorador para ver los nuevos valores de configuración.

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.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- 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.