springboot實(shí)現(xiàn)讀取nacos配置文件
springboot讀取nacos配置文件
SpringBoot 注冊(cè)服務(wù)到 Nacos 上,由 Nacos 來(lái)做服務(wù)的管理。
在 Nacos的配置列表中,管理著服務(wù)的配置文件。
SpringBoot 有兩種方式來(lái)讀取配置文件的內(nèi)容,一種是寫(xiě)配置文件類(lèi) @ConfigurationProperties ,一種是使用 @Value 注解。
首先,Nacos 的配置文件如下:
### 配置文件使用 yml 格式, 也可以使用 properties 格式,最終 yml 格式會(huì)轉(zhuǎn)化成 properties,但是 @Value 注解### 對(duì) yml 的list 的格式有不同,這個(gè)稍后再說(shuō)。
eg: server.yml (list參數(shù),使用逗號(hào)分隔)
dashboard:
emergent-info: key-1:value-1,key-2:value-2,key-3:value-3
### 或者這種形式 (注意縮進(jìn)空格,- 后空格)
dashboard:
emergent-info:
- key-1:value-1
- key-2:value-2
- key-3:value-3 第一種方式來(lái)解析
@Setter
@Getter
@ConfigurationProperties("server")
public class ServerProperties {
private List<String> dashboardEmergentInfo;
}使用 @ConfigurationProperties 方式來(lái)解析,要對(duì)應(yīng)配置文件名,對(duì)應(yīng)屬性的key值順序和參數(shù)名的駝峰形式命名。
配置文件類(lèi)的方式,可以解析上面 list 的兩種寫(xiě)法。
第二種方式來(lái)解析
@RefreshScope
public class DashboardController{
@Value("${dashboard.emergent-info:}")
private List<String> emergentInfo = new ArrayList<>();
...
} 使用 @Value 注解的方式,代碼量是少了,但是解析不了上面配置文件的第二種方式,只能解析第一種使用逗號(hào)分隔的list數(shù)據(jù)。
@Value里面的冒號(hào)后面是初始化值,這里做空處理。
Nacos 修改配置文件list的內(nèi)容,@Value 注解不會(huì)時(shí)時(shí)的刷新處理數(shù)據(jù),所以在 類(lèi)上加了 @RefreshScope。
springboot讀取nacos配置yml文件
首先導(dǎo)入nacos依賴
<!-- nacos客戶端依賴 注冊(cè)中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!-- nacos配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
一個(gè)是注冊(cè)中心一個(gè)是配置中心
需要在bootstrap.yml配置服務(wù)名稱和開(kāi)發(fā)環(huán)境:
server:
port:18080
spring:
application:
name: userservice-server
Profiles:
active:dev //開(kāi)發(fā)環(huán)境
cloud:
nacos:
discovery:
server-addr: localhost:8848 /// 這是默認(rèn)端口 注冊(cè)中心地址
config:
server-addr: localhost:8848 /// 這是默認(rèn)端口 配置中心地址
file-extension: yaml //nacos注冊(cè)中心配置文件是yaml文件,最好在這里配置一下
然后就可以開(kāi)始配置nacos配置中心了
Data ID: userservice-server-dev.yaml //這個(gè)地方就是服務(wù)名稱-開(kāi)發(fā)環(huán)境.yaml 下面文件類(lèi)別只有yaml
//group 默認(rèn)就行不用改 //描述 按自己需求寫(xiě)就行 //配置格式:選yaml //配置內(nèi)容:按自己需求 寫(xiě)yaml配置文件就可以了 注意空格問(wèn)題,多敲少敲讀取不到 yml格式
一定注意格式敲正確,over
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis找不到mapper文件的實(shí)現(xiàn)
這篇文章主要介紹了MyBatis找不到mapper文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Java IO文件過(guò)濾器對(duì)命令設(shè)計(jì)模式的使用
java io流里面使用到了很多的設(shè)計(jì)模式,最典型的就是裝飾模式,還有命令模式,下面分兩部分來(lái)講Java IO文件過(guò)濾器對(duì)命令設(shè)計(jì)模式的使用,一起看看吧2017-06-06
java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式
這篇文章主要介紹了java語(yǔ)言描述Redis分布式鎖的正確實(shí)現(xiàn)方式,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
spring security中的csrf防御原理(跨域請(qǐng)求偽造)
這篇文章主要介紹了spring security中的csrf防御機(jī)制原理解析(跨域請(qǐng)求偽造),本文通過(guò)實(shí)例代碼詳解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
java boolean占用內(nèi)存大小說(shuō)明
這篇文章主要介紹了java boolean占用內(nèi)存大小,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot+RabbitMQ實(shí)現(xiàn)消息可靠傳輸詳解
消息的可靠傳輸是面試必問(wèn)的問(wèn)題之一,保證消息的可靠傳輸主要在生產(chǎn)端開(kāi)啟?comfirm?模式,RabbitMQ?開(kāi)啟持久化,消費(fèi)端關(guān)閉自動(dòng)?ack?模式。本文將詳解SpringBoot整合RabbitMQ如何實(shí)現(xiàn)消息可靠傳輸,需要的可以參考一下2022-05-05

