Spring Cloud Config
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment
和PropertySource
抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。很容易添加替代实现,并使用Spring配置将其插入。
1.远程仓库配置文件
git地址:https://github.com/JIALEN/Spring-cloud.git
2.Spring Cloud Config服务器
服务器为外部配置(名称值对或等效的YAML内容)提供了基于资源的HTTP。服务器可以使用@EnableConfigServer
注释轻松嵌入到Spring Boot应用程序中。所以这个应用程序是一个配置服务器:
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
启动类
@SpringBootApplication
//通过注解@EnableEurekaClient 表明自己是一个eurekaclient.
@EnableEurekaClient
//表明为配置服务器
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
application.yml配置文件
server:
port: 8017
eureka:
instance:
hostname: localhost
# 发呆时间,即服务失效时间(缺省为90s),就是超过15秒没有续约就会从注册表中剔除
lease-expiration-duration-in-seconds: 15
# 心跳时间,即服务续约间隔时间(缺省为30s)
lease-renewal-interval-in-seconds: 5
client:
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。高可用的注册中心时,
#可以配置多个注册中心,通过逗号隔开
service-url:
defaultZone: http://localhost:8010/eureka/
spring:
application:
#这在以后的服务与服务之间相互调用一般都是根据这个name
name: config-server
cloud:
config:
server:
git:
#git地址
uri: https://github.com/JIALEN/reptiledata.git
#指定搜索路径,config-server会自动搜索根目录和指定目录(逗号分隔)下的文件
search-paths: /config-file/configure
default-label: master
#有读取权限的git用户
username:
password:
如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写,本例子是公开仓库,放心使用。
启动程序:访问http://localhost:8017/config-client/dev
证明配置服务中心可以从远程程序获取配置信息。
http请求地址和git上资源文件映射如下:
• /{application}/{profile}[/{label}]
• /{application}-{profile}.yml
• /{label}/{application}-{profile}.yml
• /{application}-{profile}.properties
• /{label}/{application}-{profile}.properties
3.客户端使用
要在应用程序中使用这些功能,只需将其构建为依赖于spring-cloud-config-client的Spring引导应用程序(例如,查看配置客户端或示例应用程序的测试用例)。
pom.xml文件
<!--eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
bootstrap.yml配置文件
spring:
cloud:
config:
#指明远程仓库的分支
label: master
#dev开发环境配置文件
#test测试环境
#pro正式环境
profile: dev
uri: http://localhost:8017/
这些属性必须写在bootstrap.properties配置文件中.
为什么在config client端却要使用bootstrap.yml或bootstrap.properties呢?因为bootstrap.properties的加载是先于application.properties的。
application.yml配置文件
server:
port: 8018
eureka:
instance:
hostname: localhost
# 发呆时间,即服务失效时间(缺省为90s),就是超过15秒没有续约就会从注册表中剔除
lease-expiration-duration-in-seconds: 15
# 心跳时间,即服务续约间隔时间(缺省为30s)
lease-renewal-interval-in-seconds: 5
client:
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。高可用的注册中心时,
#可以配置多个注册中心,通过逗号隔开
service-url:
defaultZone: http://localhost:8010/eureka/
spring:
application:
#这在以后的服务与服务之间相互调用一般都是根据这个name
name: config-client
测试类
@SpringBootApplication
//通过注解@EnableEurekaClient 表明自己是一个eurekaclient.
@EnableEurekaClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
package com.alen.configclient.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author alen
* @create 2018-08-18 12:20
**/
@RestController
public class HelloController {
@Value("${name}")
private String name;
@Value("${democonfigclient.message}")
private String message;
/**
* 从配置中心读取的变量的值
* @param
* @return
*/
@RequestMapping("/getname")
public String getName() {
System.out.println(name);
System.out.println(message);
return name;
}
}
结果: