#来点儿干货#
目录
- 1.前言
- 2.版本信息
- 3.引用相关pom文件
- 4.配置文件添加nacos配置中心信息
- 5.dataId的构成
- 6.通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新
- 7.在nacos配置中心增加配置数据
- 8.启动工程并刷新nacos中更新配置数据,工程中自动获取到最新的配置数据
- 9.附录

1.前言
在实际项目中常常要用到配置中心,常见的配置管理中心有Disconf、Apollo、Consul、Zookeeper、Spring Cloud Config 和Nacos,为了在项目中与这些配置管理中心交互,我们常常需要整合各类相关依赖包,解决各种版本冲突。 本文就如何快速整合spring cloud工程和nacos配置管理中心给出了详细的步骤,能够协助小伙伴们快速整合spring cloud工程和nacos 配置管理中心

2.版本信息
<properties>
<java.version>17</java.version>
<spring-boot.version>2.6.13</spring-boot.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<spring-cloud.version>2021.0.5</spring-cloud.version>
</properties>
3.引用相关pom文件
- Spring Cloud
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
- SpringBoot
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- alibaba-nacos-config
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
4. 配置文件添加nacos配置中心信息
注意必定要配置在bootstrap.properties中,否则nacos配置不会被正确加载
4.1 修改bootstrap.properties
spring.application.name=client-demo
spring.cloud.nacos.config.namespace=ns
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=properties
4.2 配置项说明
- spring.cloud.nacos.config.namespace
项目在nacos中的命名空间id,注意这里是命名空间id,不是命名空间名称

- spring.application.name
应用名,它是默认构成dataId的一部分
- spring.cloud.nacos.config.username=nacos
用户名
- spring.cloud.nacos.config.password=nacos
密码
- spring.cloud.nacos.config.server-addr=127.0.0.1:8848
nacos 配置中心服务地址
- spring.cloud.nacos.config.file-extension=properties
配置内容的数据格式,目前只支持 properties 和 yaml 类型。
5. dataId的构成
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
- prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
- spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 – 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
- file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
所以根据bootstrap.properties配置,此样例中对应的配置文件的dataId为client-demo.properties
6.通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get(boolean fuse) {
if(fuse){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
return useLocalCache;
}
}
7.在nacos配置中心增加配置数据
- 根据应用名和file-extension=properties确定配置dataId为client-demo.properties

- 增加配置数据

8.启动工程并刷新nacos中更新配置数据,工程中自动获取到最新的配置数据
8.1 启动本地工程

8.2 查看获取到的配置数据

8.3 更新配置中心数据

8.4 应用中对应的配置数据被动态刷新


9.附录
完整pom信息如下
````
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.6.13</spring-boot.version>
<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
<spring-cloud.version>2021.0.5</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
````
© 版权声明
文章版权归作者所有,未经允许请勿转载。
友友们整合nacos和spring cloud的时候遇到哪些问题呢,一起讨论下