
Server di configurazione centralizzato per sistemi distribuiti con API HTTP, crittografia/decrittografia delle proprietà e supporto per backend Git, Vault, JDBC e filesystem locale.
//// NON MODIFICARE QUESTO FILE. È STATO GENERATO. Le modifiche manuali a questo file andranno perse quando verrà generato nuovamente. Modifica invece i file nella directory src/main/asciidoc/. ////
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 fornisce supporto lato server e lato client per la configurazione esternalizzata in un sistema distribuito. Con il Config Server si dispone di un punto centrale per gestire le proprietà esterne delle applicazioni in tutti gli ambienti.
I concetti sia sul client sia sul server corrispondono in modo identico alle astrazioni Spring Environment e PropertySource, quindi si integrano molto bene con le applicazioni Spring, ma possono essere utilizzati con qualsiasi applicazione eseguita in qualsiasi linguaggio.
Quando un'applicazione attraversa la pipeline di distribuzione dallo sviluppo al test e alla produzione, puoi gestire la configurazione tra questi ambienti e avere la certezza che le applicazioni dispongano di tutto ciò di cui hanno bisogno per essere eseguite quando migrano.
L'implementazione predefinita del backend di archiviazione del server usa git, quindi supporta facilmente versioni etichettate degli ambienti di configurazione ed è accessibile a un'ampia gamma di strumenti per la gestione del contenuto.
È facile aggiungere implementazioni alternative e integrarle tramite la configurazione Spring.
== Funzionalità
=== Spring Cloud Config Server
Spring Cloud Config Server offre i seguenti vantaggi:
@EnableConfigServer=== Spring Cloud Config Client
Nello specifico per le applicazioni Spring, Spring Cloud Config Client consente di:
Environment Spring con property source remote.@RefreshScope per i @Beans Spring che devono essere re-inizializzati quando la configurazione cambia./env per aggiornare l'Environment e riassociare @ConfigurationProperties e livelli di log.
** /refresh per aggiornare i bean @RefreshScope.
** /restart per riavviare il contesto Spring (disabilitato per impostazione predefinita).
** /pause e /resume per chiamare i metodi Lifecycle (stop() e start() sull'ApplicationContext).== Avvio rapido
Questa guida rapida illustra l'utilizzo sia del server sia del client di Spring Cloud Config Server.
Per prima cosa, avvia il server, come segue:
Il server è un'applicazione Spring Boot, quindi puoi eseguirlo dal tuo IDE se preferisci (la classe principale è ConfigServerApplication).
Successivamente prova un client, come segue:
La strategia predefinita per individuare le property source è clonare un repository git (in spring.cloud.config.server.git.uri) e usarlo per inizializzare una mini SpringApplication.
L'Environment della mini-applicazione viene utilizzato per enumerare le property source e pubblicarle su un endpoint JSON.
Il servizio HTTP espone risorse nella forma seguente:
dove application viene iniettato come spring.config.name nella SpringApplication (quello che normalmente è application in una normale applicazione Spring Boot), profile è un profilo attivo (o un elenco di proprietà separate da virgole) e label è un'etichetta git opzionale (il valore predefinito è master.)
Spring Cloud Config Server recupera la configurazione per i client remoti da varie fonti. L'esempio seguente recupera la configurazione da un repository git (che deve essere fornito), come mostrato nell'esempio seguente:
Altre fonti sono qualsiasi database compatibile con JDBC, Subversion, Hashicorp Vault, Credhub e file system locali.
=== Utilizzo lato client
Per utilizzare queste funzionalità in un'applicazione, puoi realizzarla come applicazione Spring Boot che dipende da spring-cloud-config-client (per un esempio, consulta i casi di test per config-client o l'applicazione di esempio).
Il modo più comodo per aggiungere la dipendenza è tramite uno starter Spring Boot org.springframework.cloud:spring-cloud-starter-config.
Esiste anche un parent pom e una BOM (spring-cloud-starter-parent) per gli utenti Maven e un file di proprietà per la gestione delle versioni Spring IO per gli utenti Gradle e Spring CLI. L'esempio seguente mostra una tipica configurazione 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 -->
Ora puoi creare una standard applicazione Spring Boot, come il seguente server HTTP:
@SpringBootApplication @RestController public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}