
Servidor de configuração centralizado para sistemas distribuídos com API HTTP, armazenamento baseado em Git, criptografia/descriptografia de propriedades e integração com Vault, JDBC e sistemas de arquivos locais.
//// NÃO EDITE ESTE ARQUIVO. ELE FOI GERADO. Alterações manuais neste arquivo serão perdidas quando ele for gerado novamente. Edite os arquivos no diretório src/main/asciidoc/ em vez disso. ////
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"]
O Spring Cloud Config fornece suporte no lado do servidor e no lado do cliente para configuração externalizada em um sistema distribuído. Com o Config Server, você tem um lugar central para gerenciar propriedades externas de aplicações em todos os ambientes.
Os conceitos no cliente e no servidor mapeiam de forma idêntica para as abstrações Environment e PropertySource do Spring, portanto eles se encaixam muito bem com aplicações Spring, mas podem ser usados com qualquer aplicação executada em qualquer linguagem.
Conforme uma aplicação avança pelo pipeline de implantação, de desenvolvimento para teste e para produção, você pode gerenciar a configuração entre esses ambientes e ter a certeza de que as aplicações têm tudo de que precisam para executar quando migram.
A implementação padrão do backend de armazenamento do servidor usa git, portanto ela suporta facilmente versões rotuladas de ambientes de configuração, além de ser acessível a uma ampla variedade de ferramentas para gerenciar o conteúdo.
É fácil adicionar implementações alternativas e conectá-las com a configuração do Spring.
== Recursos
=== Spring Cloud Config Server
O Spring Cloud Config Server oferece os seguintes benefícios:
@EnableConfigServer=== Spring Cloud Config Client
Especificamente para aplicações Spring, o Spring Cloud Config Client permite que você:
Environment do Spring com fontes de propriedades remotas.@RefreshScope para @Beans do Spring que desejam ser reinicializados quando a configuração mudar./env para atualizar o Environment e religar @ConfigurationProperties e níveis de log.
** /refresh para atualizar os beans @RefreshScope.
** /restart para reiniciar o contexto do Spring (desabilitado por padrão).
** /pause e /resume para chamar os métodos Lifecycle (stop() e start() no ApplicationContext).== Início Rápido
Este início rápido mostra o uso do servidor e do cliente do Spring Cloud Config Server.
Primeiro, inicie o servidor, da seguinte forma:
O servidor é uma aplicação Spring Boot, portanto você pode executá-lo a partir da sua IDE, se preferir (a classe principal é ConfigServerApplication).
Em seguida, experimente um cliente, da seguinte forma:
A estratégia padrão para localizar fontes de propriedades é clonar um repositório git (em spring.cloud.config.server.git.uri) e usá-lo para inicializar uma mini SpringApplication.
O Environment da mini-aplicação é usado para enumerar as fontes de propriedades e publicá-las em um endpoint JSON.
O serviço HTTP tem recursos na seguinte forma:
onde application é injetada como spring.config.name na SpringApplication (o que normalmente é application em uma aplicação Spring Boot comum), profile é um perfil ativo (ou uma lista de propriedades separada por vírgulas), e label é um rótulo git opcional (o padrão é master.)
O Spring Cloud Config Server obtém configuração para clientes remotos de várias fontes. O exemplo a seguir mostra como obter configuração de um repositório git (que deve ser fornecido):
Outras fontes são qualquer banco de dados compatível com JDBC, Subversion, Hashicorp Vault, Credhub e sistemas de arquivos locais.
=== Uso no Lado do Cliente
Para usar esses recursos em uma aplicação, você pode construí-la como uma aplicação Spring Boot que depende de spring-cloud-config-client (para um exemplo, veja os casos de teste do config-client ou a aplicação de exemplo).
A maneira mais conveniente de adicionar a dependência é com um starter Spring Boot org.springframework.cloud:spring-cloud-starter-config.
Também há um pom pai e um BOM (spring-cloud-starter-parent) para usuários de Maven e um arquivo de propriedades de gerenciamento de versões do Spring IO para usuários de Gradle e Spring CLI. O exemplo a seguir mostra uma configuração Maven típica:
<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 -->
Agora você pode criar uma aplicação Spring Boot padrão, como o seguinte 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);
}