Springboot深入讲解nocos的整合与使用

作者:CS打赢你 时间:2022-06-05 05:11:27 

前言

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施

1,  创建工程

先创建maven工程,父工程pom如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.example</groupId>
   <artifactId>configDemo</artifactId>
   <version>1.0-SNAPSHOT</version>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.3.2.RELEASE</version>
   </parent>
   <dependencies>
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
   </dependencies>
   <dependencyManagement>
       <dependencies>
           <dependency>
               <groupId>com.alibaba.cloud</groupId>
               <artifactId>spring-cloud-alibaba-dependencies</artifactId>
               <version>2.2.5.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
       </dependencies>
   </dependencyManagement>
</project>

2,启动nacos-server服务

访问的url是:http://localhost:8848/nacos/ 默认端口是8848,账号密码是:nacos/nocos

3,编写controller进行动态配置生效

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author yhq
* @version 1.0
* @date 2022/7/15 19:07
*/
@RestController
@RefreshScope  //@RefreshScope:需要配置这个才能动态更新配置。
public class TestController {
   @Value("${name}")
   private String name;
   @GetMapping("/getName")
   public String test(){
       return name;
   }
}

4,添加配置文件boostrap.yaml

springboot默认加载配置文件顺序:

bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml 其中bootstrap.properties 配置为最高优先级先加载的会被后加载的覆盖掉,所以.properties和.yml同时存在时,.properties会失效,.yml会起作用。&rdquo;

#端口
server:
  port: 8888
#配置项目名称
spring:
  application:
    #configdemo默认是nacos的DateId名称
    name: configdemo
  #指定test的配置文件
  profiles:
    active: test
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        #加载yaml的nacos文件
        file-extension: yaml

可以看到启动时进行加载了文件如下:

Springboot深入讲解nocos的整合与使用

5,nacos配置

配置了configdemo和configdemo-test.yaml

注意的是:它的加载规则是:# 1.DataId

- 用来读取远程配置中心的中具体配置文件其完整格式如下:

- ${prefix}-${spring.profile.active}.${file-extension}

a. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。

b. spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

c. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

如果configdemo和configdemo-test.yaml 都存在name的配置,优先configdemo-test.yaml

访问结果如下:

Springboot深入讲解nocos的整合与使用

以上是针对同个服务不同环境配置应用情况。

来源:https://blog.csdn.net/weixin_42533856/article/details/125811219

标签:Springboot,整合,nocos
0
投稿

猜你喜欢

  • Java SpringBoot整合shiro-spring-boot-starterqi项目报错解决

    2022-11-07 03:27:02
  • Springboot中登录后关于cookie和session拦截问题的案例分析

    2022-09-25 19:26:44
  • Java 数据结构与算法系列精讲之时间复杂度与空间复杂度

    2022-03-19 20:19:50
  • SpringBoot中定时任务@Scheduled注解的使用解读

    2022-11-24 17:20:11
  • C#使用windows服务发送邮件

    2022-05-31 11:54:55
  • mybatis报错元素内容必须由格式正确的字符数据或标记组成异常的解决办法

    2023-01-10 15:46:37
  • DataGridView自定义单元格表示值、Error图标显示的方法介绍

    2023-12-09 19:07:04
  • android仿音悦台页面交互效果实例代码

    2023-03-27 12:55:54
  • Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+Fragment)

    2021-11-05 13:16:12
  • Android AIDL和远程Service调用示例代码

    2022-07-14 03:06:15
  • java通过JFrame做一个登录系统的界面完整代码示例

    2023-11-06 05:18:32
  • Android中切换到主线程执行的方法

    2023-08-19 07:02:28
  • android中图形图像处理之drawable用法分析

    2023-01-13 07:45:03
  • C#合并BitMap图像生成超大bitmap

    2023-12-08 18:24:11
  • Java Integer及int装箱拆箱对比

    2023-04-22 04:21:11
  • 聊聊Java Double相加出现的怪事

    2023-07-22 22:46:39
  • c#判断磁盘驱动器类型的两种方法介绍

    2023-12-18 10:04:53
  • java 获取当前函数名的实现代码

    2021-09-21 03:32:45
  • sqlite查询结果在listview中展示的实现

    2021-07-27 06:29:07
  • Android6.0仿微信权限设置

    2023-03-03 09:40:30
  • asp之家 软件编程 m.aspxhome.com