
Servidor de configuración centralizado para sistemas distribuidos con API HTTP, almacenamiento respaldado por Git, cifrado/descifrado de propiedades e integración con Vault, JDBC y sistemas de archivos locales.
NO EDITAR ESTE ARCHIVO. FUE GENERADO. Los cambios manuales a 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 proporciona soporte del lado del servidor y del cliente para la configuración externalizada en un sistema distribuido. Con el Config Server, tienes un lugar central para gestionar propiedades externas para aplicaciones en todos los entornos.
Los conceptos tanto en el cliente como en el servidor se asignan idénticamente a las abstracciones Spring Environment y PropertySource, por lo que encajan muy bien con aplicaciones Spring pero pueden usarse 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, puedes gestionar la configuración entre esos entornos y estar seguro de que las aplicaciones tienen todo lo necesario para ejecutarse cuando migran.
La implementación predeterminada del backend de almacenamiento del servidor usa git, por lo que soporta fácilmente versiones etiquetadas de entornos de configuración, además de ser accesible para una amplia gama de herramientas para gestionar el contenido.
Es fácil añadir implementaciones alternativas y conectarlas con la configuración de Spring.
== Características
=== Spring Cloud Config Server
Spring Cloud Config Server ofrece los siguientes beneficios:
@EnableConfigServer=== Spring Cloud Config Client
Específicamente para aplicaciones Spring, Spring Cloud Config Client te permite:
Environment de Spring con fuentes de propiedades remotas.@RefreshScope para @Beans de Spring que deseen ser reinicializados cuando la configuración cambie./env para actualizar el Environment y re-vincular @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 llamar a los métodos Lifecycle (stop() y start() en el ApplicationContext).== Inicio rápido
Este inicio rápido recorre el uso tanto del servidor como del cliente de Spring Cloud Config Server.
Primero, inicia el servidor, de la siguiente manera:
El servidor es una aplicación Spring Boot, por lo que puedes ejecutarlo desde tu IDE si lo prefieres (la clase principal es ConfigServerApplication).
A continuación prueba un cliente, de la siguiente manera:
La estrategia predeterminada para localizar fuentes de propiedades es clonar un repositorio git (en spring.cloud.config.server.git.uri) y usarlo para inicializar un mini SpringApplication.
El Environment de la mini-aplicación se usa para enumerar fuentes de propiedades y publicarlas en un endpoint JSON.
El servicio HTTP tiene recursos en la siguiente forma:
donde application se inyecta como spring.config.name en el SpringApplication (lo que normalmente es application en una aplicación Spring Boot normal), profile es un perfil activo (o lista separada por comas de propiedades), y label es una etiqueta git opcional (por defecto master).
Spring Cloud Config Server obtiene configuración para clientes remotos de varias fuentes. El siguiente ejemplo obtiene configuración de un repositorio git (que debe ser proporcionado), como se muestra en el siguiente ejemplo:
Otras fuentes son cualquier base de datos compatible con JDBC, Subversion, Hashicorp Vault, Credhub y sistemas de archivos locales.
=== Uso del lado del cliente
Para usar estas características en una aplicación, puedes construirla como una aplicación Spring Boot que dependa de spring-cloud-config-client (por ejemplo, consulta los casos de prueba para config-client o la aplicación de muestra).
La forma más conveniente de añadir la dependencia es con un starter Spring Boot org.springframework.cloud:spring-cloud-starter-config.
También hay un pom padre y 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 puedes 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);
}