SpringCloud2——Nacos配置管理

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

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

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

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

一、统一配置管理

1.启动nacos

在nacos的bin目录下,鼠标在空白处右击,在终端打开。
image.png
输入指令:.\startupup.cmd -m standalone
image.png

2.nacos添加

按照下图进行添加即可。
image.pngimage.png

3.IDEA 操作

  1. 引入依赖

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

<!--nacos配置管理依赖-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</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

  • 访问结果

image.png

二、热更新

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

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

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

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

方法二:使用@ConfigurationProperties注解

1.创建一个新的模块config并在其中创建新的类PatternProperties。
image.png
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())
        );
    }
}

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

image.png
优先级:[服务名]-[profile].[yaml] > [服务名].[yaml] > [本地配置]

1.创建共享nacos配置

image.png
此时,无论**[服务名]-[profile].[yaml]中的profile如何改变,[服务名].[yaml] **一定会加载。

  • 修改profile

在需要修改的service上右键选择Edit
image.png
在Active profiles中输入修改后的profile值。
image.png

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异常,如下。
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/m0_65144570/article/details/127080826
今日推荐