springboot集成nacos无法动态获取nacos配置的问题
版本说明
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!--从nacos读取配置引入-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!--备注无需引入
spring-cloud-starter-alibaba-nacos-config 2.2.6 引入的 naocs-client是1.4.2对应你安装的nacos客户端版本 我使用的nacos2.3客户端 使用1.4.2的clentpom暂时没发现问题
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>1.4.2</version>
<scope>compile</scope>
</dependency>
-->官方对应版本飞机:官方对应版本
1、创建bootstrap.properties
##springboot加载顺序 bootstrap.properties -> bootstrap.yml,由于bootstrap.yml中配置了多个环境的nacos配置,为了清晰 properties 控制环境 #注册到nacos的服务名称 spring.application.name=notice #项目环境 spring.profiles.active=dev
2、项目创建 bootstrap.yml
---
#当spring.profiles.active=test 时读取此配置
spring:
profiles: test
cloud:
nacos:
#nacos ip+端口
server-addr: 127.0.0.1:8848
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
# nacos创建的命名空间id
namespace: 57b60655-ab37-48dd-9ab7-853c28aa8ab4
#配置分组
group: ${spring.profiles.active}
#拉取配置-指定注册中心地址
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
group: ${spring.profiles.active}
# 配置文件类型 文件名称规则 spring.application.name+spring.profiles.active+file-extension
file-extension: yml
---
#当spring.profiles.active=dev 时读取此配置
spring:
profiles: dev
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: de50d235-29d1-4d17-9790-66ad89aa64b5
group: ${spring.profiles.active}
#拉取配置-指定注册中心地址
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
group: ${spring.profiles.active}
file-extension: yml
---
#当spring.profiles.active=uat 时读取此配置
spring:
profiles: uat
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: 42f254dc-9090-4e2b-80e2-bc1d6b62b92c
group: ${spring.profiles.active}
#拉取配置-指定注册中心地址
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
group: ${spring.profiles.active}
file-extension: yml
---
#当spring.profiles.active=prod 时读取此配置
spring:
profiles: prod
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: 346ccff5-04a6-4937-b531-aa6a8ca440f4
group: ${spring.profiles.active}
#拉取配置-指定注册中心地址
config:
server-addr: ${spring.cloud.nacos.server-addr}
namespace: ${spring.cloud.nacos.discovery.namespace}
group: ${spring.profiles.active}
file-extension: yml3、创建application-dev.yml
#测试动态刷新 user: userName: local-notice
注意点:
一定要在bootstrap.yml 配置nacos的registry和config 经过测试在bootstrap.yml和bootstrap.properties配置文件中 nacos才会被读取到(我在被的博客里看到在application.yml中配置的也可以,具体原因不辞清楚......)
4、在项目中创建controller测试动态刷新
@RestController
@RequestMapping("/locationTest")
@RefreshScope//刷新配置
public class LocationTest {
@Value("${user.userName}")
private String userName;
@RequestMapping("/testNoticeConfig")
@UnLogin
public String testNoticeConfig(){
return userName;
}
}一定要加注解@RefreshScope//刷新配置
5、启动项目
注意:dataId

6、nacos创建配置
情况1:
- 在bootstrap.yml 中配置了 file-extension: yml
- 名称可以是 notice.yml 也可以是notice-dev.yml
情况2:
- 在bootstrap.yml 中配置了 file-extension:properties
- 名称可以是 notice.properties 也可以是notice-dev.properties

内容:

7、测试
ocalhost:8080/locationTest/testNoticeConfig
测试访问返回的就是notice-dev
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot Logback日志记录到数据库的实现方法
这篇文章主要介绍了SpringBoot Logback日志记录到数据库的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11
SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解进行参数校验
我们经常需要对请求参数进行校验,本文主要介绍了SpringBoot使用@NotEmpty、@NotBlank、@NotNull注解进行参数校验,具有一定的参考价值,感兴趣的可以了解一下2024-08-08
30w+数据使用RedisTemplate pipeline空指针NullPointerException异常分析
这篇文章主要为大家介绍了30w+数据使用RedisTemplate pipeline空指针NullPointerException异常分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-08-08


最新评论