Nacos不僅可以作為注冊中心使用,還可以作為配置中心使用。相比於使用spring-cloud-config-server來說,我們可以不用再去建一個配置文件的git倉庫,直接可以在nacos的控制台進行操作,同時配置文件熱更新也更為方便,只需要在控制台修改,服務端就更新了。
1.加依賴
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
2.同樣的創建bootstrap.yml文件
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
application:
name: order
profiles:
active: dev
這樣服務啟動的時候會去nacos尋找dataId為order-dev.yml的配置
3.nacos控制台創建dataId為order-dev.yml的配置
DataID就是我們的完整的配置的名字,需要加上yml后綴。
還有編輯操作可以隨時修改、新增配置
啟動服務可以看見加載了order-dev.yml配置的內容
4.公用配置
我們還可以通過shared-configs配置公用的的配置,比如注冊中心大家都用同一個,redis的也可能是多個服務用同一個配置,修改一下上面的bootstrap.yml文件
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yml
shared-configs: #公用配置文件
- data-id: common1.yml
refresh: true #是否支持自動刷新
- data-id: common2.yml
refresh: true
# extension-configs: #同上
application:
name: order
profiles:
active: dev
再去nacos配置中心配置dataId為common1.yml和common2.yml的配置
重啟服務可以查看日志信息里面加載了common1和common2的配置
5.配置熱更新
熱更新,使用@Value的配置需要在當前的類上面加上@RefreshScope注解,就可以支持熱更新了,只需要在nacos配置中心修改了值,服務那邊也會跟着進行刷新。(https://nacos.io/zh-cn/docs/open-api.html)
6.nacos內置derby數據庫
Nacos內置了一個Derby數據庫這些配置數據都放在里面
我們可以使用idea鏈接上derby數據庫
Path是我們的nacos目錄下的data/derby-data
帳戶密碼就是默認nacos/nacos
我們的配置信息就在這兒,如果連接不上數據庫,把啟動的nacos服務停掉再連接就可以了,配置信息在config_info表里面
我們登錄nacos的賬號和密碼也在USERS表中
如果要修改nacos的密碼,可以直接再這里修改,我們再這里新增一個帳戶nijunyang/123456上去,它加密是用的org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder,引入這個類所在的包,直接用starter:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-security</artifactId> </dependency>
將密碼加密出來插入到數據庫中去:
再次啟動nacos就可以使用新密碼去登錄了
完整代碼demo:https://github.com/bluedarkni/study/tree/master/cloud-alibaba