
Servidor de configuración centralizado para sistemas distribuidos con API HTTP, cifrado/descifrado de propiedades y soporte para backends Git, Vault, JDBC y sistema de archivos local.
//// NO EDITE ESTE ARCHIVO. FUE GENERADO. Los cambios manuales en este archivo se perderán cuando se genere de nuevo. Edite los archivos en el directorio src/main/asciidoc/ en su lugar. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master"] image::https://api.codacy.com/project/badge/Grade/f064024a072c477e97dca6ed5a70fccd?branch=master["Codacy code quality", link="https://www.codacy.com/app/Spring-Cloud/spring-cloud-config?branch=master&utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-config&utm_campaign=Badge_Grade"]
Spring Cloud Config ofrece soporte del lado del servidor y del lado del cliente para la configuración externalizada en un sistema distribuido. Con el Config Server, dispone de un lugar central para gestionar las propiedades externas de las aplicaciones en todos los entornos.
Los conceptos tanto en el cliente como en el servidor se corresponden de forma idéntica con las abstracciones Environment y PropertySource de Spring, por lo que encajan muy bien con las aplicaciones Spring, pero pueden utilizarse con cualquier aplicación que se ejecute en cualquier lenguaje.
A medida que una aplicación avanza por el pipeline de despliegue desde desarrollo a pruebas y hasta producción, puede gestionar la configuración entre esos entornos y estar seguro de que las aplicaciones tienen todo lo que necesitan para ejecutarse cuando migran.
La implementación predeterminada del backend de almacenamiento del servidor utiliza git, por lo que admite fácilmente versiones etiquetadas de entornos de configuración y, además, es accesible para una amplia variedad de herramientas de gestión del contenido.
Es fácil añadir implementaciones alternativas y conectarlas mediante la configuración de Spring.
== Features
=== Spring Cloud Config Server
Spring Cloud Config Server ofrece las siguientes ventajas:
@EnableConfigServer=== Spring Cloud Config Client
Específicamente para aplicaciones Spring, Spring Cloud Config Client le permite:
Environment de Spring con fuentes de propiedades remotas.@RefreshScope para los @Beans de Spring que quieran reinicializarse cuando cambie la configuración./env para actualizar el Environment y reenlazar @ConfigurationProperties y niveles de log.
** /refresh para refrescar los beans @RefreshScope.
** /restart para reiniciar el contexto de Spring (deshabilitado por defecto).
** /pause y /resume para invocar los métodos Lifecycle (stop() y start() en el ApplicationContext).== Quick Start
Esta guía de inicio rápido explica cómo utilizar tanto el servidor como el cliente de Spring Cloud Config Server.
Primero, inicie el servidor, como se muestra a continuación:
El servidor es una aplicación Spring Boot, por lo que puede ejecutarlo desde su IDE si lo prefiere (la clase principal es ConfigServerApplication).
A continuación, pruebe un cliente, como se muestra a continuación:
La estrategia predeterminada para localizar fuentes de propiedades es clonar un repositorio git (en spring.cloud.config.server.git.uri) y utilizarlo para inicializar un mini SpringApplication.
El Environment de la mini-aplicación se utiliza para enumerar las fuentes de propiedades y publicarlas en un endpoint JSON.
El servicio HTTP tiene recursos con el siguiente formato:
donde application se inyecta como spring.config.name en el SpringApplication (lo que normalmente es application en una aplicación Spring Boot estándar), profile es un perfil activo (o una lista de propiedades separadas por comas) y label es una etiqueta git opcional (por defecto, master).
Spring Cloud Config Server obtiene la configuración para los clientes remotos de diversas fuentes. El siguiente ejemplo obtiene configuración de un repositorio git (que debe proporcionarse), como se muestra a continuación:
Otras fuentes son cualquier base de datos compatible con JDBC, Subversion, Hashicorp Vault, Credhub y sistemas de archivos locales.
=== Client Side Usage
=== Uso en el lado del cliente
Para usar estas características en una aplicación, puede crearla como una aplicación Spring Boot que dependa de spring-cloud-config-client (para ver un ejemplo, consulte los casos de prueba de config-client o la aplicación de muestra).
La forma más cómoda de añadir la dependencia es con un starter de Spring Boot org.springframework.cloud:spring-cloud-starter-config.
También hay un pom padre y un BOM (spring-cloud-starter-parent) para usuarios de Maven, y un archivo de propiedades de gestión de versiones de Spring IO para usuarios de Gradle y Spring CLI. El siguiente ejemplo muestra una configuración típica de Maven:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-docs-version}</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>{spring-cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- repositories also needed for snapshots and milestones -->
Ahora puede crear una aplicación Spring Boot estándar, como el siguiente servidor HTTP:
@SpringBootApplication @RestController public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}