二、SpringCloud框架搭建之Nacos配置中心

本文详细介绍了如何使用Nacos作为SpringCloud的配置中心,包括Nacos配置中心的介绍、搭建步骤、配置文件创建、动态获取配置、group和namespace的配置以及不同环境配置的使用。通过实例展示了如何在代码中读取和刷新配置,并提供了完整的项目源码供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Nacos配置中心介绍

在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。

二、Nacos配置中心搭建

一、集成maven依赖

父级Pom.xml

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.11.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<groupId>com.cloud</groupId>
	<artifactId>cloud-demo</artifactId>
	<version>1.0</version>
	<name>cloud-demo</name>
	<packaging>pom</packaging>
	<description>Demo project for Spring Boot</description>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring.cloud-version>Hoxton.SR5</spring.cloud-version>
	</properties>

	<modules>
		<module>producer</module>
		<module>consumer</module>
		<module>configure</module>
	</modules>

	<dependencyManagement>
		<dependencies>
			<!-- springCloud -->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring.cloud-version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<!-- springcloud alibaba -->
			<dependency>
				<groupId>com.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>2.0.0.RELEASE</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<dependencies>
		<!-- springBoot -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!-- web -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<version>2.0.4.RELEASE</version>
		</dependency>
        <!-- json -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
		</dependency>

	</dependencies>

子模块pom.xml

<parent>
        <groupId>com.cloud</groupId>
        <artifactId>cloud-demo</artifactId>
        <version>1.0</version>
    </parent>

    <groupId>com.cloud</groupId>
    <artifactId>configure</artifactId>
    <version>1.0</version>
    <name>configure</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!-- Nacos配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

二、Nacos创建配置文件

首先 配置管理–配置列表,点击右侧 + 新增配置。
在这里插入图片描述
编辑内容后点击发布:
在这里插入图片描述

三、配置bootstrap.yml配置文件

下面来看一下bootstrap.yml配置
注意:配置中心一定要用bootstrap.yml,使用application.yml则不生效

server:
  port: 8003
spring:
  application:
    name: configure
  cloud:
    nacos:
      config:   #创建nacos配置中心必须用bootstrap.yml或bootstrap.properties配置
        server-addr: x.x.x.x:8848  #服务配置中心地址
        prefix: ${spring.application.name}  #配置中心对应配置文件前缀
        file-extension: yml            #指定配置中心中对应的配置文件的格式

然后看代码:

/**
 * @Author wangy
 * @create 2021/6/15 9:56
 * @Description  Nacos配置中心
 */
@RestController
@RequestMapping("/configure")
public class ConfigureController {

    @Value("${config.name}")
    private String configName;

    @Value("${config.age}")
    private String configAge;

    /**
     * 通过配置中心获取配置
     * @return
     */
    @GetMapping("/getConfig")
    public String getConfig(){
        return "通过配置中心获取到{name:"+configName+",age:"+configAge+"}";
    }
}

应用启动后调用接口,发现成功读取配置:
http://127.0.0.1:8003/configure/getConfig
在这里插入图片描述

四、动态获取配置

第二节上面编辑Nacos配置后,调用接口配置未改变,现在需要用到@RefreshScope注解
看代码:

@RestController
@RequestMapping("/configure")
@RefreshScope   //加上此注解后,修改Nacos配置后,则会自动刷新配置内容
public class ConfigureController {

    @Value("${config.name}")
    private String configName;

    @Value("${config.age}")
    private String configAge;

    /**
     * 通过配置中心获取配置
     * @return
     */
    @GetMapping("/getConfig")
    public String getConfig(){
        return "通过配置中心获取到{name:"+configName+",age:"+configAge+"}";
    }
}

后面再修改Nacos配置,重新调用接口会返回最新的配置了。

五、group和namespace配置

配置中心有namespace命名空间和group组的概念,看配置

server:
  port: 8003
spring:
  application:
    name: configure
  cloud:
    nacos:
      config:   #创建nacos配置中心必须用bootstrap.yml或bootstrap.properties配置
        server-addr: x.x.x.x:8848  #服务配置中心地址
        prefix: ${spring.application.name}  #配置中心对应配置文件前缀
        file-extension: yml            #指定配置中心中对应的配置文件的格式
        group: CLOUD_GROUP   #命名空间下的,默认DEFAULT_GROUP
        namespace: cloud     #命名空间ID

则需要在Nacos平台创建名称为“cloud”的命名空间。
在这里插入图片描述
创建完后,回到配置列表,点击cloud,重新创建配置
在这里插入图片描述
重新创建的配置group输入:CLOUD_GROUP
在这里插入图片描述
然后重新启动项目,调用接口获取配置查看效果已得到配置。

六、spring.profiles.active配置文件

看配置:

server:
  port: 8003
spring:
  application:
    name: configure
  profiles:
    active: dev   #自定义环境配置
  cloud:
    nacos:
      config:   #创建nacos配置中心必须用bootstrap.yml或bootstrap.properties配置
        server-addr: x.x.x.x:8848  #服务配置中心地址
        prefix: ${spring.application.name}  #配置中心对应配置文件前缀
        file-extension: yml            #指定配置中心中对应的配置文件的格式
        group: CLOUD_GROUP   #DEV命名空间下的DEFAULT_GROUP
        namespace: cloud     #命名空间ID

配置中加入了:spring.profiles.active=dev
则需要在当前 命名空间、group、下创建配置为:configure-dev.yml的配置。
在这里插入图片描述
重新调用接口则获取到configure-dev.yml的配置。

三、参考项目源码

当前项目源码地址:
https://gitee.com/wangyue123com_admin/cloud-demo.git
分支为:Nacos-Configuration

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangyue23com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值