nacos-spring-boot配置中心使用手册

目录

[TOC]

1.nacos 服务器

服务地址:127.0.0.1:8848

账号密码:nacos / nacos

服务器版本:1.3.1官方推荐稳定版本

数据:采用内嵌式数据库持久化

2.spring-boot-nacos配置详细解释

pom依赖

<!-- 实现对 Nacos 作为配置中心的自动化配置 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>0.2.4</version>
        </dependency>

2.1主配置

# 开启配置预加载功能
nacos.config.bootstrap.enable=true
nacos.config.bootstrap.log-enable=true
# 开启配置自动刷新
nacos.config.auto-refresh=true
# 主配置 开启注册监听器预加载配置服务(除非特殊业务需求,否则不推荐打开该参数)
nacos.config.enable-remote-sync-config=true

data-id配置
  • data-ids配置,可以配置多个,排在前面的优先级最高,比如data-id为
    example的配置中有 server.port=5081,application.properties的配置中有server.port=8080,生效的是5081,因为example排在前面
  • data-id配置一个
nacos.config.data-ids=example,application.properties
nacos.config.data-id=application.properties
配置文件类型,枚举值ConfigType
nacos.config.type=properties

配置组,如果不配置nacos会默认为【DEFAULT_GROUP】,单体应用建议不配置用默认,配置需要分组用data-id进行区分
nacos.config.group=order-service
address与命名空间,可以用nacos 地址与 namespace 来区分环境
nacos.config.server-addr=192.168.16.104:8848
nacos.config.namespace=demo-dev

2.2扩展ext-config

ext-config[index] 的优先级,index越小,优先级越高,从0开始
  • 当需要用多个group 时,可以开启ext-config进行扩展,如果需要配置多个
    data-id,可以直接在data-ids后面追加,以逗号隔开
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();
        //断点调试查看environment对象
        System.out.println(environment);
}

  • 对象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的配置对象排序靠前,如果nacos上的example文件与application.properties文件有相同属性,以example上的值生效

3.spring-boot中使用

3.1 单个配置使用
@NacosValue(value = "${useLocalCache1:k1}", autoRefreshed = true)
private String testtext1;

@NacosValue 注解0.4.2版本不支持指定data-id,如果需要新建data-id进行分组,需要在application.properties 主文件中 nacos.config.data-ids=example,application.properties 中追加
如:nacos.config.data-ids=example,application.properties,newDataId ,其中newDataId为你新增的data-id名称

在 nacos的后台新增配置文件,data-id 为newDataId,此文件中可以配置新增的配置内容

3.2 一组配置使用
/**
 * 0.4.2版本
 * @prefix 配置前缀,prefix + 属性名 = 配置名,如:order.payTimeoutSeconds=10
 * @dataId 配置id(必填),如果保持与主配置一样,也可以写el表达式 如:${nacos.config.data-id}
 * @type 配置文件类型,ConfigType枚举值,默认是ConfigType.PROPERTIES
 * @autoRefreshed 自动刷新配置,一般需要加上,因为默认是false
 * @groupId 分组id ,如果不填写,则nacos会默认 DEFAULT_GROUP,单体建议不配置,使用默认
 */
@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 ,但是无法接收到nacos的配置更新,想要自动更新需要实现 nacos 客户端监听器自行实现
  • 也可以使用 spring-boot 的注解 @Value 替代@NacosValue 注解,同意是无法实现nacos自动更新,需要实现 nacos客户端件铜器自行实现
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容