
Servidor de configuração centralizado para sistemas distribuídos com API HTTP, criptografia/descriptografia de propriedades e suporte para backends Git, Vault, JDBC e sistema de arquivos local.
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"]
Spring Cloud Config fornece suporte do lado do servidor e do lado do cliente para configuração externalizada em um sistema distribuído. Com o Config Server, você tem um local central para gerenciar propriedades externas para aplicações em todos os ambientes.
Os conceitos tanto no cliente quanto no servidor mapeiam de forma idêntica para as abstrações Spring Environment e PropertySource, portanto, eles se encaixam muito bem com aplicações Spring, mas podem ser usados com qualquer aplicação executada em qualquer linguagem.
À medida que uma aplicação avança pelo pipeline de implantação, do desenvolvimento para o teste e para a produção, você pode gerenciar a configuração entre esses ambientes e ter certeza de que as aplicações têm tudo de que precisam para serem executadas quando migrarem.
A implementação padrão do backend de armazenamento do servidor usa git, portanto, suporta facilmente versões etiquetadas 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 Spring.
== Recursos
=== Spring Cloud Config Server
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 com sources de propriedade remotos.@RefreshScope para @Beans 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 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 percorre o uso tanto do servidor quanto do cliente do Spring Cloud Config Server.
Primeiro, inicie o servidor, da seguinte forma:
O servidor é uma aplicação Spring Boot, então 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 sources de propriedade é clonar um repositório git (em spring.cloud.config.server.git.uri) e usá-lo para inicializar um mini SpringApplication.
A Environment da mini-aplicação é usada para enumerar sources de propriedade e publicá-las em um endpoint JSON.
O serviço HTTP possui recursos na seguinte forma:
onde application é injetado como spring.config.name no SpringApplication (o que normalmente é application em uma aplicação Spring Boot comum), profile é um perfil ativo (ou lista separada por vírgulas de propriedades), e label é uma etiqueta git opcional (padrão é master.)
Spring Cloud Config Server obtém configuração para clientes remotos de várias fontes. O exemplo a seguir obtém configuração de um repositório git (que deve ser fornecido), conforme mostrado no exemplo a seguir:
Outras fontes são qualquer banco de dados compatível com JDBC, Subversion, Hashicorp Vault, Credhub e sistemas de arquivos locais.
=== Uso do 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 para o 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.
Há também um parent pom e BOM (spring-cloud-starter-parent) para usuários Maven e um arquivo de propriedades de gerenciamento de versão Spring IO para usuários Gradle e Spring CLI. O exemplo a seguir mostra uma configuração típica 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 -->
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);
}