玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

#来点儿干货#

目录

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

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

1.前言

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

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

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,不是命名空间名称

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

  • 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

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

  • 增加配置数据

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

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

8.1 启动本地工程

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

8.2 查看获取到的配置数据

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

8.3 更新配置中心数据

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

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

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

玩转配置管理,阿里开源配置中心Nacos和Spring Cloud整合方案详解

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>
````
© 版权声明

相关文章

1 条评论

  • Moros_s
    Moros_s 投稿者

    友友们整合nacos和spring cloud的时候遇到哪些问题呢,一起讨论下

    回复