目录
1 springcloud config简介
spring cloud config包含服务端(config server)和客户端(config client)两部分:配置文件都统一在服务端管理,可以放在Git、SVN等远程仓库上,也可以放在本地,支持的格式有yml、json、properties等,服务端配合eureka可实现服务发现,配合cloud bus可实现配置推送更新。客户端用来拉取并使用配置文件。
2 config配置实例
2.1 config服务端实例
创建项目springcloud-config-server,引入相关依赖,pom.xml配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-config-demo</artifactId>
<groupId>com.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud</groupId>
<artifactId>springcloud-config-server</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>1.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
</dependencies>
</project>
创建启动类ConfigApplication.java,引入注解@EnableConfigServer
@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
配置文件application.yml配置如下:
server:
port: 9898
#服务名字
spring:
application:
name: config-server
cloud:
config:
server:
git:
#git 仓库的地址
uri: https://github.com/xiaoyususu/springcloud-config-file.git
search-paths: file
#git 仓库的账号密码
username: username
password: password
#加入注册中心,实现高可用
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/
uri指向配置文件所在git项目的uri。
search-paths指向配置文件所匹配的路径。
username和password是访问git仓库的用户名和密码。
配置文件springcloud-config-dev.yml如下所示:
name: boy
age: 32
启动注册中心springcloud-eureka1,springcloud-eureka2,启动配置中心server端springcloud-config-server,浏览器访问
http://localhost:9898/springcloud-config-dev.yml
得到如下所示结果:
2.2 config客户端实例
创建项目springcloud-config-client,pom.xml配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-config-demo</artifactId>
<groupId>com.springcloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.springcloud</groupId>
<artifactId>springcloud-config-client</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</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>
<version>1.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
</dependencies>
</project>
创建启动类ConfigClientApplication.java
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
配置文件application.yml的配置如下所示:
spring:
application:
name: springcloud-config #指定了配置文件的应用名
cloud:
config:
# uri: http://localhost:7001/ #Config server的uri
profile: dev #指定的环境
label: master #指定分支
discovery:
enabled: true #开启配置服务发现
serviceId: config-server #配置中心服务名
fail-fast: true #快速失败
retry:
initial-interval: 1100 #首次重试间隔时间,默认1000毫秒
multiplier: 1.1D #下一次重试间隔时间的乘数,比如开始1000,下一次就是1000*1.1=1100
max-interval: 2000 #最大重试时间,默认2000
max-attempts: 3 #最大重试次数,默认6次
server:
port: 9897
management:
security:
enabled: false #SpringBoot 1.5.X 以上默认开通了安全认证,如果不关闭会要求权限
eureka:
client:
serviceUrl:
defaultZone: http://localhost:7001/eureka/
创建ConfigClientController.java
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${name}")
private String name;
@Value("${age}")
private Integer age;
@RequestMapping("/test")
public String test(){
return this.name+this.age;
}
}
启动配置中心client端应用springcloud-config-client,浏览器访问
得到如下结果:
3 总结
本文演示了springcloud config实现配置的基础用法,springcloud config的功能远远不止这些,感兴趣的朋友可以以本文为基础继续深挖,本文的源码下载地址:https://github.com/xiaoyususu/springcloud-config-demo.git