恭喜你来对地方了,我的博客从不复制粘贴互联网那些垃圾的博客!!

首先说明一下,我是单体项目,多环境 dev、test、prod。如果你是cloud项目也可以看这篇文章,我也有介绍。

官方文档可以看这里
所有的参数——服务发现
所有的参数——配置中心
这个文档怎么说呢,github的例子对新手并不友好!!

避坑指南

如果你要引入nacos 的springboot版,可以是可以,但前提是你没有用到logback, 如果用到的话,不要接springboot版本的了,我是springboot 2.3版本,官方的nacos 0.2.3系列我都试过,都不行。

springboot版

前提:如果你有logback,请大佬直接配置下面的cloud版,无坑,boot版的坑我还没有解决。如果有大佬有解决办法,欢迎在评论区指点一下,不胜感激!

首先引入pom.xml
我这里引入了0.2.7,因为这个版本有鉴权,而且我的项目启动没报错

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>nacos-config-spring-boot-starter</artifactId>
    <version>0.2.7</version>
</dependency>

application-dev.yml

nacos:
  config:
    bootstrap:
      enable: true   # 这个必须指定
    server-addr: 192.168.1.117:8847
    data-id: visitor
    group: dev
    namespace: 5fd88190-99ad-45e8-a0dc-2f3266d34eb8
    type: yaml
    max-retry: 10
    auto-refresh: true
    #    remote-first: true
    config-retry-time: 2333
    config-long-poll-timeout: 46000

由于制定了dataId,所以要建立dataId为visitor, group为dev的nacos配置文件,当然group可以使用默认命名空间。就不需要制定了。

logback的就不要试了,我已经踩过坑了,只有cloud版的那样配置才可以,boot版的那样配置,甚至连配置文件都不会加载。这个问题没有解决

动态刷新

@NacosValue(value=”${xxx.xxx}”, autoRefreshed=true)注解

springcloud版

首先引入pom文件

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.3.RELEASE</version>
</dependency>

新建bootstrap.yml文件
由于cloud版的data-id不可以手动塞值,他有一个规则,所以多环境的话cloud版的倒很有优势,可以直接一个bootstrap配置文件就搞定了

spring:
  application:
    name: visitor
  cloud:
    nacos:
      config:
        server-addr: 192.168.1.117:8847
        file-extension: yaml
        #        group: dev
        #        data-id: visitor
        namespace: 5fd88190-99ad-45e8-a0dc-2f3266d34eb8
        refresh-enabled: true
        enabled: true

如果有logback的话记得要改名字,我这里改成了logback-spring-nacos.xml, 不然的话spring启动的时候会优先加载logback.xml logback-spring.xml配置文件,而那时候nacos配置中心还没有加载进来,就会导致logback从配置中心取值失败

cloud版的dataId规则:

{prefix}-{spring.profiles.active}.${file-extension}

所以根据规则,我只需要创建visitor-dev.yaml,visitor-test.yaml,visitor-prod.yaml三个配置文件。

logback-spring.xml文件里

<contextName>logback-spring</contextName>
要改名成
<contextName>nacos</contextName>

属性取值不用做任何更改!
    <springProperty scope="context" name="topic" source="log.topic"/>

最后有一点需要注意,也就是很多博客里写的改logging:config

logging:
  config: classpath:logback-spring-nacos.xml

动态刷新

@Value()这和普通boot项目一样
记得在类上加@RefreshScope注解

分类: java

浙公网安备33011302000604

辽ICP备20003309号