SpringBoot整合nacos实现配置中心(配置动态更新)
官方教程:https://nacos.io/zh-cn/docs/quick-start-spring-boot.html
Linux使用docker部署nacos: https://www.cnblogs.com/pxblog/p/15218599.html
默认账号密码都是:nacos
nacos下载地址:https://github.com/alibaba/nacos/releases
pom.xml
<!-- https://mvnrepository.com/artifact/com.alibaba.boot/nacos-config-spring-boot-starter --> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.2.7</version> </dependency>
在 application.properties
中配置 Nacos server 的地址:
nacos.config.server-addr=127.0.0.1:8848
如果命名空间不是public要单独设置
nacos.config.namespace=dev
启动器类
这里的dataId要和配置中心的dataId对应
测试控制器
/** * 通过NacosValue读取配置, * autoRefreshed 表示是否自动更新 */ @NacosValue(value = "${http_url}", autoRefreshed = true) private String httpUrl; @GetMapping(value = "/get") @ResponseBody public String get() { return httpUrl; }
下面是第二种写法
下面这种要放在boostrap.yml中
SpringBoot项目bootstrap.yml配置文件不加载:https://www.cnblogs.com/pxblog/p/15036197.html
pom依赖 这个我把注册中心的依赖也加了
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.4.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.4.RELEASE</version> </dependency>
配置方式
spring:
application:
name: demo-service #项目名
profiles:
active: dev
cloud:
nacos:
# 配置中心
config:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.profiles.active}
# nacos的ip地址和端口
server-addr: ${NACOS-HOST:127.0.0.1}:${NACOS-PORT:8848}
#nacos登录用户名
username: nacos
#nacos登录密码
password: nacos
# 这个就表示 在我们nacos命名空间id为 dev中 有一个data-id 为 demo-service.yml 的配置文件 读取这个里面的配置
file-extension: yml
config-retry-time: 300000
# 共享配置, 可以把公共配置放在同个命名空间下,然后创建一个 common.yml 文件 ,里面可以放共用的配置
shared-configs: common.yml
# 发布到注册中心 (如果没有使用可以不配)
discovery:
# 命名空间id(此处不用public,因public初始化的空间, id为空)
namespace: ${spring.profiles.active}
# nacos的ip地址和端口
server-addr: ${NACOS-HOST:127.0.0.1}:${NACOS-PORT:8848}
如果要覆盖共享配置里面的内容 只需要在主配置文件(application.yml)中在写一遍配置即可 ,主配置优先级高
如果本地也存在application.yml文件,本地和nacos上都有这个配置,那么nacos上的优先级会比较高,只有nacos上没有这个配置时,才会读取本地的配置文件
配置参数说明
- contextPath 路径上下文。 该属性体现在serverAddr属性中 {ip}:{port}/{contextPath} ,默认是 nacos,就是页面访问时的url
- clusterName nacos config 集群名称。你的serverAddr实际上是 {ip}:{port}/{contextPath}/{clusterName} 。
- dataId规则:${prefix}-${spring.profile.active}.${file-extension} 。prefix 默认是spring.application.name。这里我们采用默认配置定义一个spring.application.name。spring.profile.active如果不设置的话nacos会自动把前面的-符号也去掉。
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)