SpringCloud2——Nacos配置管理

请添加图片描述
个人名片:

博主:酒徒ᝰ.
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志三人行,必有我师焉。

请添加图片描述
本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 一、统一配置管理
    • 1.启动nacos
    • 2.nacos添加
    • 3.IDEA 操作
  • 二、热更新
      • 方法一:在controller类中直接加入@RefreshScope注解
      • 方法二:使用@ConfigurationProperties注解
  • 三、多环境配置共享(简略)
      • 1.创建共享nacos配置
      • 2.设置共享配置
  • 四、集群搭建
  • 五、异常解决

一、统一配置管理

1.启动nacos

在nacos的bin目录下,鼠标在空白处右击,在终端打开。
SpringCloud2——Nacos配置管理_第1张图片
输入指令:.\startup.cmd -m standalone
SpringCloud2——Nacos配置管理_第2张图片

2.nacos添加

按照下图进行添加即可。
SpringCloud2——Nacos配置管理_第3张图片SpringCloud2——Nacos配置管理_第4张图片

3.IDEA 操作

  1. 引入依赖

nacos中配置的是userservice-dev.yaml,所有以下操作在user-service模块中进行。


<dependency>
   <groupId>com.alibaba.cloudgroupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
  1. bootstrap.yml文件
spring:
  application:
    name: userservice # 服务名称
  profiles:
    active: dev # 环境
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
      config:
        file-extension: yaml # 文件后缀名
  1. 属性注入
package cn.itcast.user.web;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@RestController
@RequestMapping("/user")
public class UserController {
    
    @Value("${pattern.dateformat}")
    private String dateformat;
    
    @GetMapping("/now")
    public String now(){
        return LocalDateTime.now().format(
            DateTimeFormatter.ofPattern(properties.getDateformat())
        );
    }
    
    /*
    省略...
    */
}

4.测试

  • 访问路径

http://localhost:8081/user/now

  • 访问结果

SpringCloud2——Nacos配置管理_第5张图片

二、热更新

此时,当我们修改nacos中的配置上,还需要重新启动服务才可以生效。
目的:我们需要修改nacos中的配置后,直接生效。

方法一:在controller类中直接加入@RefreshScope注解

import org.springframework.cloud.context.config.annotation.RefreshScope;

@RefreshScope
public class UserController {
    //...省略
}

方法二:使用@ConfigurationProperties注解

1.创建一个新的模块config并在其中创建新的类PatternProperties。
SpringCloud2——Nacos配置管理_第6张图片
2.PatternProperties类中写入代码

package cn.itcast.user.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    private String dateformat;
}

3.修改Controller中的代码,前面创建PatternProperties类后,将nacos的配置移入新的类中,这里需要调用新的类来获取,便于热更新。

package cn.itcast.user.web;

import cn.itcast.user.config.PatternProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private PatternProperties properties;

    @GetMapping("/now")
    public String now(){
        return LocalDateTime.now().format(
                DateTimeFormatter.ofPattern(properties.getDateformat())
        );
    }
}

三、多环境配置共享(简略)

SpringCloud2——Nacos配置管理_第7张图片
优先级:[服务名]-[profile].[yaml] > [服务名].[yaml] > [本地配置]

1.创建共享nacos配置

SpringCloud2——Nacos配置管理_第8张图片
此时,无论**[服务名]-[profile].[yaml]中的profile如何改变,[服务名].[yaml] **一定会加载。

  • 修改profile

在需要修改的service上右键选择Edit
SpringCloud2——Nacos配置管理_第9张图片
在Active profiles中输入修改后的profile值。
SpringCloud2——Nacos配置管理_第10张图片

2.设置共享配置

1.方法一:extension-configs

spring:
  cloud:
    nacos:
      config:
        extension-configs:
          - extend.yaml

2.方法二:shared-configs

spring:
  cloud:
    nacos:
      config:
        shared-configs:
          - common.yaml

四、集群搭建

nacos集群搭建.md

五、异常解决

1.未启动nacos服务器,报Connection refused: connect异常,如下。
SpringCloud2——Nacos配置管理_第11张图片

按照正确操作启动nacos即可。

你可能感兴趣的:(SpringCloud,java,spring,cloud,微服务)