springcloud config demo
服務端搭建
新建遠程git倉庫,保存配置,並將倉庫拉到本地,以後更新配置可在本地更新,在push到遠程倉庫
新建3355配置中心模塊
添加依賴:
<!--config server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
主啓動開啓配置:
@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(Configuration.class,args);
}
}
yaml配置文件:
server:
port: 3355
spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
#uri: #Github上的git倉庫名字
uri: https://gitee.com/kevin_cai_ren/springcloud-config.git
##搜索目錄.這個目錄指的是github上的目錄
search-paths:
- springcloud-config
username: [email protected]
password: XXXXXX
##讀取分支
label: master
eureka:
client:
service-url:
defaultZone: http://eureka7779.com:7779/eureka/
啓動服務拉取配置
客戶端搭建
引入依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
修改配置文件,注意,這裏使用的是bootstrap.yml,原因是bootstrap是系統級配置文件,優先級高於application.yml
server:
port: 3366
spring:
application:
name: config-client
cloud:
#Config客戶端配置
config:
label: master #分支名稱
name: config #配置文件名稱
profile: dev #讀取後綴名稱 上訴3個綜合就是 master分支上 config-dev.yml
uri: http://config-3355.com:3355 # 配置中心地址
eureka:
client:
service-url:
defaultZone: http://eureka7779.com:7779/eureka/
主啓動:
@EnableEurekaClient
@SpringBootApplication
public class ConfigClient {
public static void main(String[] args) {
SpringApplication.run(ConfigClient.class,args);
}
}
@Value註解讀取配置
@RestController
public class TestController {
@Value("${config.info: test}")//讀遠程配置,:後邊是默認值
private String info;
@RequestMapping("/get")
public Object get(){
return info;
}
}
測試:
但是存在一個問題,如果我修改了遠程配置倉庫的配置,發現客戶端讀取的到配置並沒有立馬更新,得重啓一次纔行。
解決:
採取動態刷新
引入監控依賴:
<!--監控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
修改yml暴露監控端點:
#暴露監控端點
management:
endpoints:
web:
exposure:
include: "*"
在讀取配置的類上新增註解@RefreshScope
@RestController
@RefreshScope
public class TestController {
@Value("${config.info: test}")//讀遠程配置,:後邊是默認值
private String info;
@RequestMapping("/get")
public Object get(){
return info;
}
}
ok,這樣就實現了動態刷新,需要兩個步驟:
- git修改配置
- 發送一個post請求,請求地址:http://localhost:3366/actuator/refresh
這樣就可以是實現半自動更細hhh