目錄
[TOC]
1.nacos 服務(wù)器
服務(wù)地址:127.0.0.1:8848
賬號(hào)密碼:nacos / nacos
服務(wù)器版本:1.3.1官方推薦穩(wěn)定版本
數(shù)據(jù):采用內(nèi)嵌式數(shù)據(jù)庫(kù)持久化
2.spring-boot-nacos配置詳細(xì)解釋
pom依賴
<!-- 實(shí)現(xiàn)對(duì) Nacos 作為配置中心的自動(dòng)化配置 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.4</version>
</dependency>
2.1主配置
# 開(kāi)啟配置預(yù)加載功能
nacos.config.bootstrap.enable=true
nacos.config.bootstrap.log-enable=true
# 開(kāi)啟配置自動(dòng)刷新
nacos.config.auto-refresh=true
# 主配置 開(kāi)啟注冊(cè)監(jiān)聽(tīng)器預(yù)加載配置服務(wù)(除非特殊業(yè)務(wù)需求侦镇,否則不推薦打開(kāi)該參數(shù))
nacos.config.enable-remote-sync-config=true
data-id配置
- data-ids配置,可以配置多個(gè)弟翘,排在前面的優(yōu)先級(jí)最高,比如data-id為
example的配置中有 server.port=5081,application.properties的配置中有server.port=8080,生效的是5081,因?yàn)閑xample排在前面 - data-id配置一個(gè)
nacos.config.data-ids=example,application.properties
nacos.config.data-id=application.properties
配置文件類型,枚舉值ConfigType
nacos.config.type=properties
配置組丁侄,如果不配置nacos會(huì)默認(rèn)為【DEFAULT_GROUP】,單體應(yīng)用建議不配置用默認(rèn),配置需要分組用data-id進(jìn)行區(qū)分
nacos.config.group=order-service
address與命名空間朝巫,可以用nacos 地址與 namespace 來(lái)區(qū)分環(huán)境
nacos.config.server-addr=192.168.16.104:8848
nacos.config.namespace=demo-dev
2.2擴(kuò)展ext-config
ext-config[index] 的優(yōu)先級(jí)鸿摇,index越小,優(yōu)先級(jí)越高劈猿,從0開(kāi)始
- 當(dāng)需要用多個(gè)group 時(shí)拙吉,可以開(kāi)啟ext-config進(jìn)行擴(kuò)展,如果需要配置多個(gè)
data-id揪荣,可以直接在data-ids后面追加筷黔,以逗號(hào)隔開(kāi)
nacos.config.ext-config[0].data-id=order.properties
nacos.config.ext-config[0].group=DEFAULT_GROUP
nacos.config.ext-config[0].max-retry=10
nacos.config.ext-config[0].type=yaml
nacos.config.ext-config[0].auto-refresh=true
nacos.config.ext-config[0].enable-remote-sync-config=true
2.3查看配置加載順序
- springboot 代碼
@SpringBootApplication
public class NacosDemoApplication {
ConfigurableApplicationContext run = SpringApplication.run(NacosDemoApplication.class, args);
// 查看 Environment
Environment environment = run.getEnvironment();
//斷點(diǎn)調(diào)試查看environment對(duì)象
System.out.println(environment);
}
- 對(duì)象environment 的PropertySource、PropertySourceList屬性
[MapPropertySource {name='server.ports'}, ConfigurationPropertySourcesPropertySource {name='configurationProperties'}, StubPropertySource {name='servletConfigInitParams'}, ServletContextPropertySource {name='servletContextInitParams'}, PropertiesPropertySource {name='systemProperties'}, OriginAwareSystemEnvironmentPropertySource {name='systemEnvironment'}, RandomValuePropertySource {name='random'}, OriginTrackedMapPropertySource {name='applicationConfig: [classpath:/application-dev.properties]'}, OriginTrackedMapPropertySource {name='applicationConfig: [classpath:/application.properties]'}, NacosPropertySource {name='example|DEFAULT_GROUP|demo-dev||129.28.119.76:8848|||||||'}, NacosPropertySource {name='application.properties|DEFAULT_GROUP|demo-dev||129.28.119.76:8848|||||||'}]
application.properties配置文件如下
nacos.config.data-ids=example,application.properties
PropertySourceList屬性顯示 的name = example的配置對(duì)象排序靠前仗颈,如果nacos上的example文件與application.properties文件有相同屬性佛舱,以example上的值生效
3.spring-boot中使用
3.1 單個(gè)配置使用
@NacosValue(value = "${useLocalCache1:k1}", autoRefreshed = true)
private String testtext1;
@NacosValue 注解0.4.2版本不支持指定data-id,如果需要新建data-id進(jìn)行分組挨决,需要在application.properties 主文件中 nacos.config.data-ids=example,application.properties 中追加
如:nacos.config.data-ids=example,application.properties,newDataId ,其中newDataId為你新增的data-id名稱在 nacos的后臺(tái)新增配置文件请祖,data-id 為newDataId,此文件中可以配置新增的配置內(nèi)容
3.2 一組配置使用
/**
* 0.4.2版本
* @prefix 配置前綴凰棉,prefix + 屬性名 = 配置名损拢,如:order.payTimeoutSeconds=10
* @dataId 配置id(必填)陌粹,如果保持與主配置一樣撒犀,也可以寫(xiě)el表達(dá)式 如:${nacos.config.data-id}
* @type 配置文件類型,ConfigType枚舉值,默認(rèn)是ConfigType.PROPERTIES
* @autoRefreshed 自動(dòng)刷新配置,一般需要加上或舞,因?yàn)槟J(rèn)是false
* @groupId 分組id ,如果不填寫(xiě)荆姆,則nacos會(huì)默認(rèn) DEFAULT_GROUP,單體建議不配置映凳,使用默認(rèn)
*/
@Configuration
@NacosConfigurationProperties(prefix = "order", dataId = "example",groupId = "ORDER-SERVICE",type = ConfigType.PROPERTIES,autoRefreshed = true)
public class OrderProperties {
private Integer payTimeoutSeconds;
private Integer name;
public Integer getPayTimeoutSeconds() {
return payTimeoutSeconds;
}
public void setPayTimeoutSeconds(Integer payTimeoutSeconds) {
this.payTimeoutSeconds = payTimeoutSeconds;
}
public Integer getName() {
return name;
}
public void setName(Integer name) {
this.name = name;
}
}
- 也可以使用 spring-boot的注解 @ConfigurationProperties 胆筒,但是無(wú)法接收到nacos的配置更新,想要自動(dòng)更新需要實(shí)現(xiàn) nacos 客戶端監(jiān)聽(tīng)器自行實(shí)現(xiàn)
- 也可以使用 spring-boot 的注解 @Value 替代@NacosValue 注解诈豌,同意是無(wú)法實(shí)現(xiàn)nacos自動(dòng)更新仆救,需要實(shí)現(xiàn) nacos客戶端件銅器自行實(shí)現(xiàn)