Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以为所有环境中的应用程序管理其外部属性。它非常适合spring应用,也可以使用在其他语言的应用上。随着应用程序通过从开发到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。
Spring Cloud Config服务端特性
Config客户端的特性(特指Spring应用)
小编一共上传了三个文件,在根目录上传两个application.yml和config-test.properties
#application.yml文件内容
spring:
profiles:
active:
- dev
---
spring:
profiles: dev
application:
name: application-dev
---
spring:
profiles: test
application:
name: application-test
#config-test.properties文件内容
name=spring-config-test
要根目录新建config-git文件夹,文件夹里新建config-dev.yml
#config-dev.yml文件内容
name: config-git-config-dev
org.springframework.cloud
spring-cloud-config-server
@EnableConfigServer
注解@SpringBootApplication
@EnableConfigServer
public class DemoConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(DemoConfigServerApplication.class, args);
}
}
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/Lailaimonkey/code.git #配置git地址
#username: # git仓库的账号(公开仓库无需账号信息)
#passphrase: # git仓库的密码(公开仓库无需账号信息)
search-paths: config-git # git仓库地址下的相对搜索地址(可用使用通配符),可以配置多个,用,分割。 此配置加载根目录和config-git目录
server:
port: 8080
# 映射{application}-{profile}.properties文件
/{application}/{profile}/[{label}]
/{label}/{application}-{profile}.properties
/{application}-{profile}.properties
/{label}/{application}-{profile}.yml
/{application}-{profile}.yml
{application}通常使用微服务名称,对应Git仓库中文件名的前缀;
{profile}对应{application}-后面的dev、pro、test等;
{label}对应Git仓库的分支名,默认为master。
{"name":"application","profiles":["test"],"label":null,"version":"99bc093f7fdc77012767b1ca58bba7675ef91360","state":null,"propertySources":[{"name":"https://github.com/Lailaimonkey/code.git/application.yml (document #2)","source":{"spring.profiles":"test","spring.application.name":"application-test"}},{"name":"https://github.com/Lailaimonkey/code.git/application.yml (document #0)","source":{"spring.profiles.active[0]":"dev"}}]}
访问 http://localhost:8080/config-test.properties 显示config-test.properties配置文件信息
name: spring-config-test
spring.application.name: application-test
spring.profiles.active[0]: dev
访问 http://localhost:8080/config-dev.yml 显示config-git文件夹下config-dev.yml信息
name: config-git-config-dev
spring:
application:
name: application-dev
profiles:
active:
- dev
org.springframework.cloud
spring-cloud-starter-config
Spring Boot应用程序启动时加载application.yml/application.properties。Spring Cloud中有“引导上下文”的概念,引导上下文加载bootstrap.yml/bootstrap.properties,而且具有更高的优先级,默认情况下bootstrap.yml/bootstrap.properties中的属性不能被覆盖。
在application.yml同级目录下创建bootstrap.yml文件,内容为:
spring:
cloud:
config:
name: application #需要从github上读取资源名称,注意没有yml后缀名
profile: dev #本次访问配置项
label: master
uri: http://localhost:8080 #本微服务启动后先去找8080服务,通过SpringCloudConfig
@RestController
public class ConfigController {
@Value("${profile}")
private String profile;
@GetMapping("/profile")
public String profile(){
return this.profile;
}
}
大功告成!