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

 更新时间:2022年07月18日 16:55:55   作者:CS打赢你  
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,在项目开发过程中,我们经常使用nacos作为配置中心和注册中心。本文章我们就从代码层面研究下springboot是如何整合nacos使用的

前言

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会起作用。”

#端口
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

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

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的整合与使用的文章就介绍到这了,更多相关Springboot nocos内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Mybatis中result标签识别不了的情况

    解决Mybatis中result标签识别不了的情况

    这篇文章主要介绍了解决Mybatis中result标签识别不了的情况,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。
    2022-01-01
  • Lombok注解-@SneakyThrows的使用

    Lombok注解-@SneakyThrows的使用

    这篇文章主要介绍了Lombok注解-@SneakyThrows的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Java实现微信支付的项目实践

    Java实现微信支付的项目实践

    最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,本文就来介绍一下Java实现微信支付的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 举例讲解Java的RTTI运行时类型识别机制

    举例讲解Java的RTTI运行时类型识别机制

    这篇文章主要介绍了Java的RTTI运行时类型识别机制,包括泛化的Class引用以及类型检查instanceof等知识点,需要的朋友可以参考下
    2016-05-05
  • Mybatis Update操作返回值问题

    Mybatis Update操作返回值问题

    在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数,下面通过本文给大家分享Mybatis Update操作返回值问题,需要的朋友参考下吧
    2017-09-09
  • 关于通过Java连接mysql对反斜杠”\“转义的测试详解

    关于通过Java连接mysql对反斜杠”\“转义的测试详解

    这篇文章主要给大家介绍了关于通过Java连接mysql对反斜杠”\“转义的测试的相关资料,文中通过实例代码介绍的非常详细,对大家理解反斜杠”\“转义具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • SpringBoot 使用AOP + Redis 防止表单重复提交的方法

    SpringBoot 使用AOP + Redis 防止表单重复提交的方法

    Spring Boot是一个用于构建Web应用程序的框架,通过AOP可以实现防止表单重复提交,本文介绍了在Spring Boot应用程序中使用AOP和Redis来防止表单重复提交的方法,需要的朋友可以参考下
    2023-04-04
  • java实现潜艇大战游戏源码

    java实现潜艇大战游戏源码

    潜艇大战游戏相信大家都玩过,是一款非常有趣的小游戏,那么基于代码是如何实现的呢?今天小编给大家带来一篇教程帮助大家学习java实现潜艇大战游戏,感谢的朋友一起看看吧
    2021-06-06
  • Java中String和StringBuffer及StringBuilder 有什么区别

    Java中String和StringBuffer及StringBuilder 有什么区别

    这篇文章主要介绍了Java中String和StringBuffer及StringBuilder 有什么区别,String 是 Java 语言非常基础和重要的类,更多相关内容需要的小伙伴可以参考下面文章内容
    2022-06-06
  • java中对象的序列化与反序列化深入讲解

    java中对象的序列化与反序列化深入讲解

    这篇文章主要给大家介绍了关于java中对象的序列化与反序列化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09

最新评论