Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。使用Config Server,您可以集中管理所有环境中应用程序的外部属性。客户端和服务器上的概念都与Spring Environment和PropertySource抽象相同,因此它们非常适合Spring应用程序,但可以与任何语言运行的应用程序一起使用。当应用程序通过从开发环境到测试环境和生产环境的部署管道时,您可以管理这些环境之间的配置,并确保应用程序在迁移时需要运行所需的一切。
服务器存储后端的默认实现使用git,因此它很容易支持配置环境的标记版本,以及可以通过各种工具来访问内容。很容易添加替代实现,并用Spring配置插入它们。
Spring Cloud Config Server的特性有:
HTTP,用于外部配置的基于资源的API(名称 - 值对或等效的YAML内容)
加密和解密属性值(对称或不对称
使用@EnableConfigServer可以轻松地嵌入到Spring Boot应用程序中
Spring Cloud Config Client的特性(针对Spring application):
绑定配置服务器,并使用远程属性资源初始化spring的环境
加解密属性值(对称和非对称)
快速入门
推荐使用maven或gradle进行项目依赖管理构建。
org.springframework.cloud
spring-cloud-config
1.3.0.M1
pom
import
org.springframework.cloud
spring-cloud-starter-config
spring-milestones
Spring Milestones
https://repo.spring.io/libs-milestone
false
只要Spring Boot Actuator和Spring Config Client在类路径上,任何Spring Boot应用程序将尝试联系http:// localhost:8888(spring.cloud.config.uri的默认值)上的配置服务器:
@Configuration
@EnableAutoConfiguration
@RestController
public class Application {
@Value("${config.name}")
String name = "World";
@RequestMapping("/")
public String home() {
return "Hello " + name;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
示例中的config.name的值(或者在正常Spring Boot方式中绑定的任何其他值)可以来自本地配置或来自远程配置服务器。 默认情况下,远程配置服务器将优先。 要看看这个应用程序中的/ env端点,并查看configServer属性源。
要运行自己的服务器,请使用spring-cloud-config-server依赖项和@EnableConfigServer。 如果设置了spring.config.name = configserver,应用程序将在端口8888上运行,并从示例仓库提供数据。 你需要一个spring.cloud.config.server.git.uri来定位你自己需要的配置数据(默认是git仓库的位置,可以是本地文件:.. URL)。