您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關SpringCloud如何整合Nacos配置中心的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
member.nickname = "悟空聊架構"
member.age = "18"
@Value("${member.nickname}")
private String nickname;
@Value("$member.age")
private Integer age;
@RequestMapping("/test-local-config")
public R testLocalConfig() {
return R.ok().put("nickname", nickname).put("age", age);
}
總結:從配置文件中獲取配置。
這種方式的缺點是什么呢?如果要修改配置參數,則需要重新啟動服務。如果服務很多,則需要重啟所有服務,非常不方便。
有沒有什么辦法不停服務修改配置而且使其生效呢?
答案:有的,用Spring Cloud Alibaba的Nacos 組件就可以完成。
PassJava-Common項目的pom.xml文件引入Spring Cloud Alibaba Nacos Config依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
passjava-member 添加 /src/main/resources/bootstrap.properties 配置文件(注意:bootstrap.properties 優先級高于其他配置文件)
配置 Nacos Config 元數據
spring.application.name=passjava-member
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
Data ID: passjava-member.properties
Group: DEFAULT_GROUP
配置格式:
member.nick="悟空"
member.age=10
添加注解@RefreshScope開啟動態刷新配置功能
@RefreshScope
@RestController
@RequestMapping("member/sample")
publicclass SampleController {}
可以從控制臺看到日志信息:
Refresh keys changed: [member.age]
2020-04-19 23:34:07.154 INFO 8796 --- [-127.0.0.1_8848] c.a.nacos.client.config.impl.CacheData : [fixed-127.0.0.1_8848] [notify-ok] dataId=passjava-member.properties, group=DEFAULT_GROUP, md5=df136e146c83cbf857567e75acb11e2b, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@4f49b78b
2020-04-19 23:34:07.154 INFO 8796 --- [-127.0.0.1_8848] c.a.nacos.client.config.impl.CacheData : [fixed-127.0.0.1_8848] [notify-listener] time cost=529ms in ClientWorker, dataId=passjava-member.properties, group=DEFAULT_GROUP, md5=df136e146c83cbf857567e75acb11e2b, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@4f49b78b
member.age
更新了,通知了member服務,刷新了配置。
對應的配置id為passjava-member.properties
,分組為DEFAULT_GROUP
。
監聽器為com.alibaba.cloud.nacos.refresh.NacosContextRefresher
訪問:http://localhost:10000/member/sample/test-local-config
結果:nickname和age和Nacos后臺配置一致
結論:只用在Nacos后臺改配置即可實時修改配置。
注意:Nacos的配置項優先級高于application.propertite里面的配置。
我們現在有5個微服務,每個微服務用到的配置可能都不一樣,那不同微服務怎么樣獲取自己微服務的配置呢?
這里可以用到命名空間,我們針對每個微服務,都創建一個命名空間。
創建命名空間
# 創建5個命名空間
passjava-channel
passjava-content
passjava-member
passjava-question
passjava-study
命名空間下創建配置
我們打開配置列表菜單,可以看到有五個命名空間。
選中passjava-channel命名空間,然后新增配置項,與之前新增配置的步驟一致,也可以通過克隆命名空間來克隆配置。
修改指定的命名空間
bootstrap.properties配置命名空間
spring.cloud.nacos.config.namespace=passjava-member
測試配置是否生效
修改passjava-member.properties的配置內容
重啟member服務
訪問方法:/member/sample/test-local-config
執行結果:
{
"msg": "success",
"code": 0,
"nickname": "\"悟空member\"",
"age": 30
}
說明獲取的是passjava-member命名空間的配置
如果我們有多套環境,比如開發環境,測試環境,生產環境,每一套環境的配置參數不一樣,那配置中心該如何配置呢?
我們可以使用配置中心的分組
功能。每一套環境都是一套分組。
spring.cloud.nacos.config.group=prod
測試獲取生產環境配置
{
"msg": "success",
"code": 0,
"nickname": "\"悟空-prod\"",
"age": 10
}
可以看到獲取到的是prod分組的配置
我們可以將application.yml文件中的datasource、mybatis-plus等配置進行拆解,放到配置中心。group可以創建3套,dev/test/prod。
1.配置中心新建datasource.yml
配置
2.配置中心新建mybatis.yml
配置
3.配置中心新建more.yml
配置
4.克隆dev環境配置到test和prod環境
5.bootstrap.properties增加nacos配置,application.yml注釋配置
spring.application.name=passjava-member
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=passjava-member
spring.cloud.nacos.config.group=prod
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yml
spring.cloud.nacos.config.extension-configs[0].group=dev
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=mybatis.yml
spring.cloud.nacos.config.extension-configs[1].group=dev
spring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs[2].data-id=more.yml
spring.cloud.nacos.config.extension-configs[2].group=dev
spring.cloud.nacos.config.extension-configs[2].refresh=true
6.測試配置是否生效
請求url:http://localhost:10000/member/sample/test-local-config
返回配置的nick和age,且端口是10000,且member服務注冊到注冊中心
{
"msg": "success",
"code": 0,
"nickname": "\"悟空-prod1\"",
"age": 22
}
請求url:http://localhost:10000/member/member/list
返回數據庫查詢結果
{
"msg": "success",
"code": 0,
"page": {
"totalCount": 0,
"pageSize": 10,
"totalPage": 0,
"currPage": 1,
"list": []j
}
}
說明以上配置都生效了。
感謝各位的閱讀!關于“SpringCloud如何整合Nacos配置中心”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。