
Server di configurazione centralizzato per sistemi distribuiti con API HTTP, archiviazione basata su Git, crittografia/decrittografia delle proprietà e integrazione con Vault, JDBC e filesystem locali.
//// NON MODIFICARE QUESTO FILE. È STATO GENERATO. Le modifiche manuali a questo file andranno perse quando verrà rigenerato. 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, hai un punto centrale per gestire le proprietà esterne per le applicazioni in tutti gli ambienti.
I concetti sia lato client che lato server si mappano in modo identico alle astrazioni Spring Environment e PropertySource, quindi si adattano molto bene alle applicazioni Spring ma possono essere utilizzati con qualsiasi applicazione in esecuzione in qualsiasi linguaggio.
Quando un'applicazione si muove attraverso la pipeline di distribuzione dallo sviluppo al test e alla produzione, puoi gestire la configurazione tra questi ambienti ed essere certo che le applicazioni abbiano tutto ciò di cui hanno bisogno per funzionare quando vengono migrate.
L'implementazione predefinita del backend di archiviazione del server utilizza 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 con la configurazione Spring.
== Caratteristiche
=== Spring Cloud Config Server
Spring Cloud Config Server offre i seguenti vantaggi:
@EnableConfigServer=== Spring Cloud Config Client
Specificamente per le applicazioni Spring, Spring Cloud Config Client ti consente di:
Environment Spring con sorgenti di proprietà remote.@RefreshScope per gli @Bean Spring che vogliono essere reinizializzati 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 richiamare i metodi Lifecycle (stop() e start() sull'ApplicationContext).== Avvio rapido
Questo avvio rapido illustra l'utilizzo sia del server che 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 sorgenti di proprietà è clonare un repository git (all'indirizzo spring.cloud.config.server.git.uri) e utilizzarlo per inizializzare un mini SpringApplication.
L'Environment della mini-applicazione viene utilizzato per enumerare le sorgenti di proprietà e pubblicarle su un endpoint JSON.
Il servizio HTTP ha risorse nella seguente forma:
dove application viene iniettato come spring.config.name nel SpringApplication (quello che normalmente è application in una normale app Spring Boot), profile è un profilo attivo (o un elenco separato da virgole di proprietà) e label è un'etichetta git opzionale (il valore predefinito è master).
Spring Cloud Config Server recupera la configurazione per i client remoti da varie sorgenti. Il seguente esempio ottiene la configurazione da un repository git (che deve essere fornito), come mostrato nell'esempio seguente:
Altre sorgenti sono qualsiasi database compatibile con JDBC, Subversion, Hashicorp Vault, Credhub e filesystem locali.
=== Utilizzo lato client
Per utilizzare queste funzionalità in un'applicazione, puoi crearla 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ù conveniente per aggiungere la dipendenza è con uno starter Spring Boot org.springframework.cloud:spring-cloud-starter-config.
C'è anche un parent pom e BOM (spring-cloud-starter-parent) per utenti Maven e un file di proprietà di gestione delle versioni Spring IO per utenti Gradle e Spring CLI. Il seguente esempio 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 un'applicazione Spring Boot standard, 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);
}