之前提到了這次從php技術(shù)棧遷移到j(luò)ava技術(shù)棧要解決的一個(gè)問題就是集中化配置管理。
我們?yōu)槭裁磿?huì)有配置中心的需求?
- 配置管理變更較為方便
- 合理控制配置的權(quán)限內(nèi)容
Nacos 控制臺(tái)增加配置文件
- 進(jìn)入Nacos管理界面,在【配置管理】-【配置列表】功能頁面點(diǎn)擊右上角的 + 號(hào)。
- 進(jìn)入 新建配置 頁面,填寫要新增的配置內(nèi)容
WARN:Data ID的默認(rèn)擴(kuò)展名為properties,如果需要使用yaml格式則需要指明是 .yaml
- 發(fā)布配置
配置完成后點(diǎn)擊發(fā)布,即可在配置列表中看到剛才新增的配置
創(chuàng)建Nacos Config客戶端
- 新建項(xiàng)目,由于使用SpringCloudAlibaba直接引用相關(guān)依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 創(chuàng)建應(yīng)用主類并且實(shí)現(xiàn)一個(gè)HTTP接口
- 啟動(dòng)類
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class,args);
}
}
- Controller
@RefreshScope
@RestController
@RequestMapping("/config")
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@Value("${name}")
private String name;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
@RequestMapping("/name")
public String name(){
return name;
}
}
@RefreshScope在這里的作用就是讓配置內(nèi)容支持動(dòng)態(tài)刷新,也就是當(dāng)應(yīng)用運(yùn)行中,我們在Nacos控制臺(tái)修改了配置之后這里也會(huì)動(dòng)態(tài)的更新。
- 項(xiàng)目bootstrap.properties配置服務(wù)名稱與Nacos地址
# 配置中心url
spring.cloud.nacos.config.server-addr=localhost:8848
# 配置中心展現(xiàn)的服務(wù)名稱
spring.application.name=nacos-config-example
#配置文件類型[TEXT,JSON,XML,YAML,HTML,Properties]

spring.cloud.nacos.config.file-extension=properties
# 配置分組,當(dāng)前的業(yè)務(wù)基本選擇為某些的GROUP,可以基于業(yè)務(wù)來劃分不同的分組.
spring.cloud.nacos.config.group=DEFAULT_GROUP
# 默認(rèn)選擇的配置環(huán)境,當(dāng)前把環(huán)境劃分為4套, dev[開發(fā)環(huán)境],test[測試環(huán)境],pre[預(yù)發(fā)環(huán)境],prod[生產(chǎn)環(huán)境]
spring.profiles.active=dev
WARN 多環(huán)境配置中需要指定Nacos namespace的id,而不是指定namespace的名稱
- 啟動(dòng)應(yīng)用程序并進(jìn)行驗(yàn)證
- 啟動(dòng)應(yīng)用
- 發(fā)送請求測試配置是否生效
- 修改配置進(jìn)行進(jìn)行動(dòng)態(tài)刷新
進(jìn)入Nacos控制臺(tái)修改配置信息,name修改為bigData 再次進(jìn)行測試
再次發(fā)送請求

至此使用Nacos作為配置中心已經(jīng)完全搞定,并且也實(shí)現(xiàn)了多環(huán)境的配置。多環(huán)境有幾種方式實(shí)現(xiàn),但是我依然習(xí)慣使用namespace的方式來實(shí)現(xiàn)。
源碼:
https://github.com/CainGao/SpringCloudAlibabaExample



