En vous référant au Spring Cloud Config Manual Construisez simplement ConfigServer et ConfigClient, Vérifiez si le fichier de paramètres placé dans ConfigServer est reflété dans Client.
Config Server
Ajout de spring-cloud-config-server
build.gradle
dependencies {
implementation('org.springframework.cloud:spring-cloud-config-server')
}
Ajout de @ EnableConfigServer
à la classe de démarrage SpringBoot
ConfigServerApplication.java
@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class, args);
}
}
Définissez le référentiel git où se trouve le fichier de configuration sur application.yml. De plus, Springboot utilise par défaut le port 8080, donc Réglez le port sur 8880 afin de ne pas entrer en collision avec le client décrit plus loin.
application.yml
server:
port: 8880
spring:
cloud:
config:
server:
git:
#L'URI du référentiel git où réside le fichier de configuration
uri: https://github.com/spring-cloud-samples/config-repo.git
Une fois la configuration terminée, démarrez. Une fois démarré, il sera accessible sur les terminaux suivants.
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties
ConfigClient obtient le fichier de configuration de ConfigServer en remplaçant {} par la valeur de Client.
{application}: valeur de spring.application.name
(la valeur par défaut est" application ")
{profile}: valeur de spring.profiles.active
{label}: branche git, nom de la balise ou commitID (la valeur par défaut est "master")
Si vous essayez de faire une requête à http: // localhost: 8880 / foo / development /
La réponse suivante a été renvoyée
{
"name": "foo",
"profiles": [
"development"
],
"label": null,
"version": "a611374438e75aa1b9808908c57833480944e1a8",
"state": null,
"propertySources": [
{
"name": "https://github.com/spring-cloud-samples/config-repo.git/foo-development.properties",
"source": {
"bar": "spam",
"foo": "from foo development"
}
},
{
"name": "https://github.com/spring-cloud-samples/config-repo.git/foo.properties",
"source": {
"foo": "from foo props",
"democonfigclient.message": "hello spring io"
}
},
{
"name": "https://github.com/spring-cloud-samples/config-repo.git/application.yml (document #0)",
"source": {
"info.description": "Spring Cloud Samples",
"info.url": "https://github.com/spring-cloud-samples",
"eureka.client.serviceUrl.defaultZone": "http://localhost:8761/eureka/",
"foo": "baz"
}
}
]
}
S'il y a une authentification dans le référentiel git, il semble que vous devriez définir application.yml en faisant référence à cette zone Authentication
Config Client
Ajout de spring-cloud-starter-config
build.gradle
dependencies {
implementation('org.springframework.cloud:spring-cloud-starter-config')
}
Créez un nouveau bootstrap.yml
SpringCloudConfigClient charge bootstrap.yml au lieu de application.yml
Accès à ce spring.cloud.config.uri
(http: // localhost: 8888 si non spécifié)
bootstrap.yml
spring:
application:
name: foo
profiles:
active: development
cloud:
config:
#URI de ConfigServer
uri: http://localhost:8880
#Défini sur true si vous souhaitez lever une exception lorsque vous ne pouvez pas vous connecter à ConfigServer(la valeur par défaut est false)
fail-fast: true
Ajout d'un point de terminaison qui peut vérifier la valeur du paramètre dans la classe de démarrage
ConfigClientApplication.java
@SpringBootApplication
@RestController
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
@GetMapping("/bar")
public String bar(@Value("${bar: notDefined}") String bar) {
return bar;
}
@GetMapping("/foo")
public String foo(@Value("${foo: notDefined}") String foo) {
return foo;
}
}
Étant donné que le nom d'application du client est foo et que le profil est développement, le fichier de paramètres suivant est la valeur attendue. https://github.com/spring-cloud-samples/config-repo/blob/master/foo-development.properties
bar: spam
foo: from foo development
Lorsque vous démarrez Client et accédez à localhost: 8080 / bar, "spam" Quand j'ai accédé à localhost: 8080 / foo, "from foo development" était affiché.