SpringCloud整合Nacos实现流程详解

作者:yaominghui 时间:2021-07-04 11:11:09 

1: Nacos搭建可以参考 https://www.jb51.net/article/196842.htm

SpringCloud 版本


<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-dependencies</artifactId>
   <version>Greenwich.SR2</version>
   <type>pom</type>
   <scope>import</scope>
</dependency>

Nacos pom


<!--配置中心pom-->
   <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     <version>${alibaba-nacos-config.version}</version>
   </dependency>

<!--服务发现pom-->
   <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     <version>${alibaba-nacos-discovery.version}</version>
   </dependency>

数据库pom


<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>${druid.version}</version>
   </dependency>
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>${mysql.conn.version}</version>
   </dependency>

order 项目 bootstrap.yml 配置


spring:
application:
 name: order-server
profiles:
 active: dev
cloud:
 nacos:
  config:
   server-addr: 10.0.0.51:8848 # 配置中心nacos的地址
   file-extension: yml # 配置文件后缀(格式)
   group: business-app # 分组名称
   namespace: ${spring.profiles.active} # 命令空间,可以用来区分不同的环境
  discovery:
   server-addr: 10.0.0.51:8848 # 服务发现地址nacos的地
   namespace: ${spring.profiles.active}

 server: port: 8056

在 Nacos的控制台左侧找到命名空间的菜单,新增命名空间

命名空间id : dev
命名空间名称: dev
描述:开发环境

配置中心功能-测试

在配置管理-》配置列表右侧,找到 + 的标志,点击后新增配置

SpringCloud整合Nacos实现流程详解

将yml 中的配置添入进去

之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。

在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

上面配置好后,可以启动项目

启动日志:


Ignore the empty nacos configuration and get it based on dataId[order-server.yml] & group[business-app]
2020-09-16 14:05:07.053 WARN 27342 --- [      main] c.a.c.n.c.NacosPropertySourceBuilder   : Ignore the empty nacos configuration and get it based on dataId[order-server-dev.yml] & group[business-app]
2020-09-16 14:05:07.053 INFO 27342 --- [      main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='order-server-dev.yml,business-app'}, NacosPropertySource {name='order-server.yml,business-app'}, NacosPropertySource {name='order-server,business-app'}]}
2020-09-16 14:05:07.077 INFO 27342 --- [      main] com.order.OrderApplication        : The following profiles are active: dev

从日志可以看到他会从nacos上匹配 based on dataId[order-server-dev.yml] & group[business-app] 和 [order-server.yml] & group[business-app] 配置文件。并且项目也是启动成功的,因为项目中加入了数据库的pom,如果没有获取到配置会启动失败。

服务发现功能-测试

按照上面yml 中的配置,启动后在服务列表中看到我们的项目

SpringCloud整合Nacos实现流程详解

按照上面的配置,再创建一个项目 account-server ,注意修改新项目的spring.application.name

在order 项目的pom中添加feign 配置


<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

测试用户下单成功后,扣减帐户钱。order 调用 account 服务,使用feign,跟一般的feign使用一样。 启动account服务

SpringCloud整合Nacos实现流程详解

代码目录 : https://gitee.com/zhangxingsheng/seata-demo

标签:Spring,Cloud,Nacos
0
投稿

猜你喜欢

  • Java实现登录与注册页面

    2023-04-17 03:21:20
  • Java异常处理中同时有finally和return语句的执行问题

    2022-08-14 15:28:30
  • C语言实现扫雷游戏(含注释详解)

    2023-11-02 15:25:07
  • 使用IDEA创建servlet JavaWeb 应用及使用Tomcat本地部署的实现

    2023-09-11 06:04:09
  • 举例说明Java设计模式编程中ISP接口隔离原则的使用

    2023-11-20 11:07:40
  • Vs2022环境下安装低版本.net framework的实现步骤

    2023-07-04 02:58:12
  • 基于spring security实现登录注销功能过程解析

    2023-11-29 06:09:05
  • 使用开源项目JAVAE2 进行视频格式转换

    2023-11-08 07:18:24
  • Springboot全局异常捕获及try catch区别解析

    2022-03-02 17:44:07
  • 浅谈Java线程Thread之interrupt中断解析

    2023-07-19 09:25:11
  • Spring组件开发模式支持SPEL表达式

    2023-09-05 11:53:31
  • Java利用三目运算符比较三个数字的大小

    2023-04-18 01:20:19
  • Java日常练习题,每天进步一点点(7)

    2023-11-27 00:34:58
  • Android编程基础之获取手机屏幕大小(DisplayMetrics应用)示例

    2023-09-26 17:57:43
  • Java并发编程预防死锁过程详解

    2023-11-09 15:33:58
  • android TextView中识别多个url并分别点击跳转方法详解

    2023-06-21 04:42:32
  • C#中32位浮点数Float(Real)一步步按位Bit进行分析

    2023-07-19 16:01:20
  • 深入理解Java中的接口

    2023-11-08 23:52:43
  • java设计模式之适配器模式

    2021-08-28 09:08:09
  • ActiveMQ结合Spring收发消息的示例代码

    2023-11-24 06:01:12
  • asp之家 软件编程 m.aspxhome.com