config-server
application.properties
server.port=8005
spring.application.name=config-server
###git仓库地址
spring.cloud.config.server.git.uri= https://github.com/github-ygy/spring_cloud_test
####git 相对目录地址 多个,分开
spring.cloud.config.server.git.search-paths=cloud-config-repository
###github public 不用配置username 和 password
#spring.cloud.config.server.git.username =
#spring.cloud.config.server.git.password=
application
@SpringBootApplication
@EnableConfigServer
public class ConfigMasterApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigMasterApplication.class, args);
}
}
输出
http:
{
"name": "test",
"profiles": [
"prd"
],
"label": null,
"version": "16610aaf21ae2e0934ec3522009ef993829ec086",
"state": null,
"propertySources": [
{
"name": "https://github.com/github-ygy/spring_cloud_test/cloud-config-repository/test-prd.properties",
"source": {
"from": "git-prd-1.0"
}
}
]
}
http:
{
"name": "test",
"profiles": [
"prd"
],
"label": "dev_ygy",
"version": "0978a00b06877b63a89653bea4ec0ac8df779df9",
"state": null,
"propertySources": [
{
"name": "https://github.com/github-ygy/spring_cloud_test/cloud-config-repository/test-prd.properties",
"source": {
"from": "git-prd-2.0"
}
}
]
}
config-client
bootstrap.properties
#######必须使用bootstrap.properties 使用application.properties 将无法解析@Value属性
#######bootstrap.propeties 会优先于application.properties加载
server.port=8006
####配置中心git仓库 文件名 与<application> 对应
spring.application.name = test
#####配置中心git仓库 文件名 启动配置文件标识 与<profile> 对应
spring.cloud.config.profile = dev
####配置中心git仓库分支名 与<lable> 对应
spring.cloud.config.label=dev_ygy
####配置中心config server地址
spring.cloud.config.uri=http://localhost:8005/
controller
@RestController
public class ConfigClientController {
@Value("${from}")
private String from ;
@RequestMapping("/getConfig")
public String getConfig() {
return this.from;
}
}
输出
http:
git-dev-2.0
config-eureka(整合)
失败响应机制/自动刷新
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
bootstrap.properties
spring.application.name = config-client
#######必须使用bootstrap.properties 使用application.properties 将无法解析@Value属性
#######bootstrap.propeties 会优先于application.properties加载
server.port=8006
###eureka管理
eureka.client.serviceUrl.defaultZone=http://pear1:9998/eureka/
spring.cloud.config.discovery.enabled = true
### 失败响应
spring.cloud.config.fail-fast=true
####引入aop retry依赖
####最大重试次数 默认6次
spring.cloud.config.retry.max-attempts= 6
####最大重试时间间隔
spring.cloud.config.retry.max-interval= 2000
#####初始重试间隔 默认1000
spring.cloud.config.retry.initial-interval = 1500
##### 下一次间隔系数
spring.cloud.config.retry.multiplier= 1.2
####开启自动刷新 引入actuator 依赖
#### 感觉有bug 待后续解决 属性注册不成功,将config-server 项目注册为默认 configserver可行。
#spring.cloud.config.discovery.serviceid = config-server
####关闭授权
management.security.enabled=false
####配置中心git仓库 文件名 与<application> 对应
spring.cloud.config.name = test
#####配置中心git仓库 文件名 启动配置文件标识 与<profile> 对应
spring.cloud.config.profile = dev
####配置中心git仓库分支名 与<lable> 对应
spring.cloud.config.label=dev_ygy
####配置中心config server地址
###spring.cloud.config.uri=http://localhost:8005/
controller
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${from}")
private String from ;
@RequestMapping("/getConfig")
public String getConfig() {
return this.from;
}
}
application
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
post请求刷新
public class PostRquest {
public static void main(String[] args) throws Exception {
HttpResponse<String> jsonResponse = Unirest.post("http://localhost:8006/refresh")
.asString();
System.out.println(jsonResponse.getBody());
}
}
输出
git-dev-2.0
["config.client.version","from"]
git-dev-2.0-refresh