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

SpringCloud大盘餐之Nacos配置中心

    • 一、Nacos配置中心介绍
    • 二、Nacos配置中心搭建
      • 一、集成maven依赖
      • 二、Nacos创建配置文件
      • 三、配置bootstrap.yml配置文件
      • 四、动态获取配置
      • 五、group和namespace配置
      • 六、spring.profiles.active配置文件
    • 三、参考项目源码

一、Nacos配置中心介绍

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

二、Nacos配置中心搭建

一、集成maven依赖

父级Pom.xml

<parent>
		<groupId>org.springframework.bootgroupId>
		<artifactId>spring-boot-starter-parentartifactId>
		<version>2.3.11.RELEASEversion>
		<relativePath/> 
	parent>

	<groupId>com.cloudgroupId>
	<artifactId>cloud-demoartifactId>
	<version>1.0version>
	<name>cloud-demoname>
	<packaging>pompackaging>
	<description>Demo project for Spring Bootdescription>

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

	<modules>
		<module>producermodule>
		<module>consumermodule>
		<module>configuremodule>
	modules>

	<dependencyManagement>
		<dependencies>
			
			<dependency>
				<groupId>org.springframework.cloudgroupId>
				<artifactId>spring-cloud-dependenciesartifactId>
				<version>${spring.cloud-version}version>
				<type>pomtype>
				<scope>importscope>
			dependency>

			
			<dependency>
				<groupId>com.alibaba.cloudgroupId>
				<artifactId>spring-cloud-alibaba-dependenciesartifactId>
				<version>2.0.0.RELEASEversion>
				<type>pomtype>
				<scope>importscope>
			dependency>

		dependencies>
	dependencyManagement>

	<dependencies>
		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starterartifactId>
		dependency>
		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
			<version>2.0.4.RELEASEversion>
		dependency>
        
		<dependency>
			<groupId>com.alibabagroupId>
			<artifactId>fastjsonartifactId>
			<version>1.2.47version>
		dependency>

	dependencies>

子模块pom.xml

<parent>
        <groupId>com.cloudgroupId>
        <artifactId>cloud-demoartifactId>
        <version>1.0version>
    parent>

    <groupId>com.cloudgroupId>
    <artifactId>configureartifactId>
    <version>1.0version>
    <name>configurename>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>
    <dependencies>
        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
        dependency>

    dependencies>

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

二、Nacos创建配置文件

首先 配置管理–配置列表,点击右侧 + 新增配置。
二、SpringCloud框架搭建之Nacos配置中心_第1张图片
编辑内容后点击发布:
二、SpringCloud框架搭建之Nacos配置中心_第2张图片

三、配置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
二、SpringCloud框架搭建之Nacos配置中心_第3张图片

四、动态获取配置

第二节上面编辑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”的命名空间。
二、SpringCloud框架搭建之Nacos配置中心_第4张图片
创建完后,回到配置列表,点击cloud,重新创建配置
二、SpringCloud框架搭建之Nacos配置中心_第5张图片
重新创建的配置group输入:CLOUD_GROUP
二、SpringCloud框架搭建之Nacos配置中心_第6张图片
然后重新启动项目,调用接口获取配置查看效果已得到配置。

六、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的配置。
二、SpringCloud框架搭建之Nacos配置中心_第7张图片
重新调用接口则获取到configure-dev.yml的配置。

三、参考项目源码

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

你可能感兴趣的:(Nacos,java,springBoot,Nacos配置中心,Nacos动态配置中心,集成Nacos,Config,配置中心,Nacos配置中心学习)