之前提到了這次從php技術棧遷移到java技術棧要解決的一個問題就是集中化配置管理。
我們爲什麼會有配置中心的需求?
-
配置管理變更較爲方便 -
合理控制配置的權限內容
Nacos 控制檯增加配置文件
-
進入Nacos管理界面,在【配置管理】-【配置列表】功能頁面點擊右上角的 + 號。
-
進入 新建配置 頁面,填寫要新增的配置內容
「WARN」:Data ID的默認擴展名爲「properties」,如果需要使用yaml格式則需要指明是 「.yaml」3. 發佈配置 配置完成後點擊發布,即可在配置列表中看到剛纔新增的配置
創建Nacos Config客戶端
-
新建項目,由於使用SpringCloudAlibaba直接引用相關依賴
<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>
-
創建應用主類並且實現一個HTTP接口
-
啓動類
@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」在這裏的作用就是讓配置內容支持動態刷新,也就是當應用運行中,我們在Nacos控制檯修改了配置之後這裏也會動態的更新。
-
項目bootstrap.properties配置服務名稱與Nacos地址
# 配置中心url
spring.cloud.nacos.config.server-addr=localhost:8848
# 配置中心展現的服務名稱
spring.application.name=nacos-config-example
#配置文件類型[TEXT,JSON,XML,YAML,HTML,Properties]
spring.cloud.nacos.config.file-extension=properties
# 配置分組,當前的業務基本選擇爲某些的GROUP,可以基於業務來劃分不同的分組.
spring.cloud.nacos.config.group=DEFAULT_GROUP
# 默認選擇的配置環境,當前把環境劃分爲4套, dev[開發環境],test[測試環境],pre[預發環境],prod[生產環境]
spring.profiles.active=dev
「WARN」 多環境配置中需要指定Nacos namespace的id,而不是指定namespace的名稱
-
啓動應用程序並進行驗證
-
啓動應用
-
發送請求測試配置是否生效
-
修改配置進行進行動態刷新
進入Nacos控制檯修改配置信息,name修改爲bigData 再次進行測試
再次發送請求
至此使用Nacos作爲配置中心已經完全搞定,並且也實現了多環境的配置。多環境有幾種方式實現,但是我依然習慣使用namespace的方式來實現。
「源碼:」
https://github.com/CainGao/SpringCloudAlibabaExample
本文分享自微信公衆號 - 指尖數蟲(zhijianshuchong)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。