微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

SpringCloud大盘餐之Nacos配置中心

一、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配置后,调用接口配置未改变,现在需要用到@@H_231_61@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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐