恭喜你来对地方了,我的博客从不复制粘贴互联网那些垃圾的博客!!
首先说明一下,我是单体项目,多环境 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注解