Nacos配置管理
创始人
2024-04-30 22:04:28

前言:大家好,我是小威,24届毕业生,曾经在某央企公司实习,目前已入职某税务公司。本篇文章将分享nacos配置管理和热更新的知识点。
本篇文章记录的基础知识,适合在学Java的小白,也适合复习中,面试中的大佬🤩🤩。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
小威在此先感谢各位大佬啦~~🤞🤞
在这里插入图片描述

🏠个人主页:小威要向诸佬学习呀
🧑个人简介:大家好,我是小威,一个想要与大家共同进步的男人😉😉
目前状况🎉:24届毕业生,曾经在某央企公司实习,目前在某税务公司实习👏👏

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,我亲爱的大佬😘

在这里插入图片描述

以下正文开始

我们都知道,nacos经常用来作为服务的注册中心使用,致力于微服务的发现和管理。但同时,nacos也可以配置与整合服务,接下来将一步步操作nacos的统一配置管理。

首先登录nacos,找到配置管理中的配置列表,点击+号,新建配置,配置文件的id经常由服务名称,profile和后缀名组成,由于我们的服务是用户服务,因此我们取名为userservice,profile环境为dev开发环境,后缀名为yaml,因此id为userservice-profile.yaml。配置内容为:

pattern:dateformat: yyyy年MM月dd日 HH:mm:ss

如下所示新建成功:
在这里插入图片描述

项目启动后,在没有进行nacos配置管理之前,会首先读取本地的配置文件application.yml,加上了nacos中的配置文件,会将nacos中的配置文件和application.yml中的文件进行整合。但是我们需要知道,在何处加载nacos配置文件,因此在项目启动之后,我们首先需要获取nacos的地址。

application.yml文件的读取在nacos文件之后,由于bootstrap.yml文件的优先级比较高,因此,我们可以将nacos地址,文件相关信息等放入到bootstrap.yml中。

在resources下新建bootstrap.yaml(引导文件,优先级比application.yaml高),写入nacos的相关配置信息(名成,环境,后缀名都需要和上面建立的nacos配置一样)这些信息决定了程序启动时去nacos中读取哪个文件:
在这里插入图片描述

spring:application:name: userservice #服务的名称profiles:active: dev #开发环境cloud:nacos:server-addr: localhost:8848config:file-extension: yaml #文件的后缀名

在这里插入图片描述

同时,在userservice的pom文件中引入nacos的配置管理客户端依赖:

        com.alibaba.cloudspring-cloud-starter-alibaba-nacos-config

下面我们测试在项目中读取nacos的配置内容:

@RequestMapping("/user")
public class UserController {@Value("${pattern.dateformat}")//获取nacos配置文件的内容private String dateformat;@GetMapping("/now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat)); //与当前时间对应}}

之后启动SpringBoot的几个端口
在这里插入图片描述
按照正确的路径访问即可看到浏览器上显示的当前时间。
在这里插入图片描述
在这里插入图片描述

当我们修改nacos中的配置内容时,需要重启我们的微服务项目,那么如何实现热更新呢(不用重启微服务项目,刷新访问浏览器即可)。

我们只需要在@value注入的变量所在的类上添加@RefreshScope即可,代码:

@RequestMapping("/user")
@RefreshScope
public class UserController {@Value("${pattern.dateformat}")//获取nacos配置文件的内容private String dateformat;@GetMapping("/now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat)); //与当前时间对应}}

同时,我们还有另一种方法,不使用@value注解的方式,新建一个配置类:

package cn.itcast.user.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {private String dateformat;
}

自动装配注入PatternProperties 类调用get方法即可。

public class UserController {//    @Value("${pattern.dateformat}")
//    private String dateformat;@Autowiredprivate PatternProperties patternProperties;@GetMapping("/now")public String now(){return LocalDateTime.now().format(DateTimeFormatter.ofPattern(patternProperties.getDateformat()));}
}

对于nacos的多服务共享配置,多种配置的优先级为:服务名-profile.yaml >
服务名称.yaml > 本地配置(application.yaml)。

本篇文章就先分享到这里了,后续会继续分享其他的知识,感谢大佬认真读完支持咯~
在这里插入图片描述

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起讨论🍻
希望能和诸佬们一起努力,今后进入到心仪的公司
再次感谢各位小伙伴儿们的支持🤞

在这里插入图片描述

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...