Springboot 实践(17)spring boot整合Nacos配置中心

2023-09-15 17:44:35

        前文我们讲解了Nacos服务端的下载安装,本文我们降价spring boot整合nacos,实现Nacos服务器配置参数的访问。

一、启动Nacos服务,创建三个配置文件,如下所示

  • Springboot-Nacos-Client-dev.yaml文件配置参数

  • Springboot-Nacos-Client.yaml文件配置参数

  • sjl.yaml文件配置参数

二、建立Nacos客户端

1、利用MyEclipse2019创建web project工程,命名为“Springboot-Nacos-Client”,工程全貌如下图所示:

2、修改pom.xml文件

pom文件中加入对应jar包,

<!--注册中心的依赖-->

<dependency>

    <groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

    <version>2.1.2.RELEASE</version>

</dependency>

<!-- 配置中心的依赖 -->

<dependency>

    <groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>

    <version>2.1.2.RELEASE</version>

</dependency>      

<dependency>

    <groupId>com.alibaba.nacos</groupId>

    <artifactId>nacos-client</artifactId>

    <version>2.1.2</version>

</dependency>  

<dependency>

    <groupId>com.alibaba.cloud</groupId>

    <artifactId>spring-cloud-alibaba-dependencies</artifactId>

    <version>2.1.2.RELEASE</version>

    <type>pom</type>

    <scope>import</scope>

</dependency>

备注:注意上述jar包的版本,需要和Nacos官网发布的匹配版本一致,否则会有各种奇怪问题出现。

3、修改application.yml文件

文件内容如下:

spring:

  application:

    name: Springboot-Nacos-Client

  profiles:

    active: dev  # 激活配置

  cloud:

 nacos:

   discovery:

     server-addr: 127.0.0.1:8848

     username: nacos

     password: nacos

      config:

       enabled: true # 是否开启配置中心 默认true

       server-addr: 127.0.0.1:8848  #nacos地址

       username: nacos

password: nacos

       namespace: 7fe8fb2f-9e3a-438b-bf9a-1a0ca8d4c898 

       group: test

       prefix: ${spring.application.name}

       file-extension: yaml   #文件后缀,可省略不配置      

       extension-configs:

          - data-id: sjl.yaml

            group: test

                refresh: true

             - data-id: Springboot-Nacos-Client.yaml

               group: test

               refresh: true

备注:

spring-cloud-starter-alibaba-nacos-config 默认加载文件

加载 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置,

加载dataid为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置

extension-configs:  #扩展配置,用于引入多个配置;多配置文件时,避免出现系统参数配置%

配置文件优先权

通过内部相关规则(应用名、扩展名、profiles)自动生成相关的 Data Id 配置优先级最高nacos中的配置优先于本地配置,本地的bootstrap.yml>bootstrap.properties>application.yml>application.yaml>application.properties

扩展配置(extension-configs) > 共享配置(shared-configs)

同为扩展配置,存在如下优先级关系:extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0]

同为共享配置,存在如下优先级关系:shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]

4、添加启动函数

@SpringBootApplication(scanBasePackages= {"com.SJL"},exclude = {

        DataSourceAutoConfiguration.class,

        DataSourceTransactionManagerAutoConfiguration.class,

        HibernateJpaAutoConfiguration.class})

@ComponentScan(basePackages= {"com.SJL"})

@ServletComponentScan(basePackages= {"com.SJL"})

@EnableDiscoveryClient

public class ConfingClientApplication {

    public static void main(String[] args) {

        SpringApplication.run(ConfingClientApplication.class, args);

    }              

}

5、添加Controller,访问Nacos配置文件参数

创建三个Controller文件,分别如下:

☆NacosConfigController文件

@RequestMapping("/config")

@RestController

@RefreshScope

@NacosConfigurationProperties(dataId = "Springboot-Nacos-Client-dev.yaml", groupId = "test", autoRefreshed = true)

public class NacosConfigController {

    @Value(value = "${config.name}")

    private String configName;

    @NacosInjected

    private ConfigService configService;

    @GetMapping("getConfigName")

    public String getConfigName(){

        return configName;

    }      

}

☆NacosConfigController2文件

@RequestMapping("/config2")

@RestController

@RefreshScope

@NacosConfigurationProperties(dataId = "Springboot-Nacos-Client.yaml", groupId = "test", autoRefreshed = true)

public class NacosConfigController2 {

    @Value(value = "${auther}")

    private String auther;

    @NacosInjected

    private ConfigService configService;

    @GetMapping("getAuther")

    public String getAuther(){

        return auther;

    }

}

☆NacosConfigController3文件

RequestMapping("/config3")

@RestController

@RefreshScope

@NacosConfigurationProperties(dataId = "sjl.yaml", groupId = "test", autoRefreshed = true)

public class NacosConfigController3 {

    @Value(value = "${name}")

    private String name;

    @GetMapping("getName")

    public String getName(){

      return name;

    }   

}

三、测试

在浏览中,输入“localhost:2881/swagger-ui.html”,测试三个controller的返回结果,如下所示,能够获得争取结果。

更多推荐

高云FPGA系列教程(6):ARM定时器使用

文章目录@[toc]1.ARM定时器简介2.FPGA配置3.常用函数4.MCU程序设计5.工程下载本文是高云FPGA系列教程的第6篇文章。本篇文章介绍片上ARMCortex-M3硬核处理器定时器外设的使用,演示定时器溢出中断的配置方法,基于TangNano4K开发板。参考文档:Gowin_EMPU(GW1NS-4C)软

《计算机视觉中的多视图几何》笔记(7)

7ComputationoftheCameraMatrixPPP这章讲的是摄像机参数估计。摄像机标定,本质上就是求摄像机矩阵PPP,当我们知道足够多的X↔xX\leftrightarrowxX↔x,我们该如何计算PPP?如果知道3D和2D点的对应,那么内参和外参可以由基本的线性方程求解问题算出。遇到超定解时的解决办法也

Java面试题基础第十一天

一、java面试题第十一天1.跨域问题怎么解决呢?有以下有几种方法CORS,跨域资源共享我们可以通过springboot为每一个请求设置它的请求头,来设置它的可以跨域的路径,这样可以为每一个请求都可以跨域了@CrossOrigin注解我们可以通过springboot来设置Controller类加个@CrossOrigi

Deformable DETR(2020 ICLR)

DeformableDETR(2020ICLR)detr训练epochs缩小十倍,小目标性能更好Deformableattention结合变形卷积的稀疏空间采样和Transformer的关系建模能力使用多层级特征层特征,不需要使用FPN的设计(直接使用backbone多层级输出)两种提升方法:bbox迭代细化机制2.两

二叉树的概念及存储结构

目录1.树的概念1.1树的相关概念1.2树的表示与应用2.二叉树的概念及结构2.1二叉树的概念2.1.1特殊的二叉树2.2.2二叉树的性质2.2二叉树的结构2.2.1顺序存储2.2.2链式存储这是一篇纯理论的博客,会对数据结构中的二叉树进行详细的讲解,让你对树的能有个清晰的认知.1.树的概念树是一种非线性的数据结构,它

Vue2组件通信 - dispatch 和 broadcast

目录8,dispatch和broadcast整体思路实现dispatch使用举例broadcast使用举例承接文章Vue2中10种组件通信方式和实践技巧,因为一篇文章太长无法发表,所以做拆分。8,dispatch和broadcast在Vue@1版本中,有$dispatch和$broadcast这种基于组件树的工作流来通

C++关键词探索:理解变量、函数参数、函数返回值以及类成员函数的修饰符

在C++编程中,我们经常会遇到一些关键词,它们可以用来修饰变量、函数参数、函数返回值以及类的成员函数。这些关键词包括const、static、volatile、mutable、signed、unsigned、long、short、virtual、explicit、inline和friend。让我们一起来深入理解一下这些

基于SSM的高校教学业绩信息管理系统设计与实现

末尾获取源码开发语言:JavaJava开发工具:JDK1.8后端框架:SSM前端:采用JSP技术开发数据库:MySQL5.7和Navicat管理工具结合服务器:Tomcat8.5开发软件:IDEA/Eclipse是否Maven项目:是目录一、项目简介二、系统功能三、系统项目截图​编辑四、核心代码登录相关文件上传封装五、

Vue路由及Node.js环境搭建

1.介绍什么是Vue.js和Node.js?Vue.js和Node.js是两个不同的技术,分别用于前端和后端开发,具有不同的用途和功能:Vue.js:Vue.js是一款流行的前端JavaScript框架,也被称为渐进式框架。它由尤雨溪开发,并由社区支持和维护。Vue.js主要用于构建现代、交互式的Web用户界面。它的核

React中组件通信02——消息订阅与发布、取消订阅以及卸载组件时取消订阅

React中组件通信02——消息订阅与发布、取消订阅以及卸载组件时取消订阅1.前言1.1使用props通信1.2关于useEffect2.安装pubsub-js3.消息订阅与发布3.1简单例子-13.2简单例子-2(完善、优化)——订阅消息+使用消息4.取消订阅4.1取消单个topic4.2取消多个或更多语法4.3卸载

LeetCode 面试题 04.09. 二叉搜索树序列

文章目录一、题目二、C#题解一、题目从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉搜索树root,输出所有可能生成此树的数组。点击此处跳转题目。示例1:输入:root=[2,1,3]输出:[[2,1,3],[2,3,1]]解释:数组[2,1,3]、[2,3,

热文推荐