当前位置: 首页 > news >正文

如何从0创建Spring Cloud Alibaba(多模块)

以一个父工程带两个Module(test1、test2)为例。

一、创建父工程

由于是模块化项目,那么父工程不需要实际的代码逻辑,因此无需创建src,那么可以有几种方式创建,例如:

  1. 使用Spring Initializr脚手架创建,构建工具选择Maven POM,即可创建出只带pom文件的Maven工程
  2. 使用脚手架或者只用maven创建后,删除src、.mvn目录

下面使用方式1来创建:
在这里插入图片描述
在这里插入图片描述
这里我们先不管SpringBoot的版本号,因为也没几个可选的合适的,创建完之后再改到合适的版本。默认3.0.3创建出来的java版本是17。不选择依赖
在这里插入图片描述
可以看到创建出来的父工程只有一个pom文件没有src目录
在这里插入图片描述

二、创建module模块

分别创建test1和test2模块。File–>new–>Module
在这里插入图片描述
依赖就勾一个Spring Web就行,剩下的慢慢补
在这里插入图片描述
创建之后的结构如下。展开模块 都带src文件夹和各自的pom文件
在这里插入图片描述 在这里插入图片描述

三、调整pom.xml

1、整改父pom与模块pom结构

在父pom中增加<packaging>pom</packaging>,代表父工程只作为整体项目的整合 传递依赖,在打包时不会生成jar/war包。pom中没有设置packaging时,默认使用jar打包
在这里插入图片描述
在父pom中增加<module>,module中的参数就是每个module中的artifactId
在这里插入图片描述
修改module pom中的parent信息,删除parent中的<relativePath>并删除自己的groupId。修改后的parent中parent信息均为父工程的pom参数,而父工程的parent为Spring原生的,形成了pom的层级传递关系
在这里插入图片描述

2、加入Spring Cloud依赖
首先需要确定版本号,Spring Cloud Alibaba、Spring Cloud、Spring Boot三者需要版本兼容
整体要以Spring Cloud Alibaba的版本为主,来决定SpringBoot的版本。

Spring Cloud Alibaba、Spring Cloud、Spring Boot官方版本说明地址:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
在这里插入图片描述
由于目前企业中SpringBoot大部分使用Spring2.几,那么我们采用最新的稳定版2.3.12.RELEASE,Spring Cloud Alibaba采用2.2.9.RELEASE,那么Spring Cloud的版本就是Hoxton.SR12

修改父工程与子工程的java version为8,因为创建的时候用的Spring Boot 3.0.x,需要使用java 17,而改到2.x.x,就需要修改java版本。并在父pom中加入Spring Cloud Alibaba,Spring Cloud依赖(每个模块单独依赖也行,就是要写多个)
在这里插入图片描述
注意:Spring Cloud Alibaba和Spring Cloud都是使用import pom的方式在依赖中引入进来。默认的依赖scope为compile,type默认为jar,那么依赖的包就会在编译时将jar加载进来。而引入的jar过多会导致pom越来越大很难维护,于是可以定义一个父pom,通过import的方式继承过来,而把这部分相关的所有jar引用放到父pom里。其实直接定义<parent>也可以实现这样的继承,但是因为父工程已经继承了SpringBoot的pom,maven只能单继承,于是采用这样import的方式实现pom的多继承。

	<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Hoxton.SR12</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.9.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

直接放到<dependencyManagement>中,dependencyManagement只声明依赖,原因下面引入nacos时讲
在这里插入图片描述

四、调整目录结构

由于直接用默认的maven,不需要使用maven wrapper,删除.mvn、mvnw、mvnw.cmd文件,HELP.md也删了吧,留着没什么用,需要可以后期补一个README.md。删完看效果(右图)
在这里插入图片描述 ------- 在这里插入图片描述

五、将服务注册到Nacos(注册中心)

1、安装Nacos
官网地址:https://nacos.io/zh-cn/index.html
在这里插入图片描述
在readme里面找到下载地址
在这里插入图片描述
或者直接看官网文档,也可以跳转到github下载链接
在这里插入图片描述
在这里插入图片描述

根据操作系统下载包,上面两个是安装包,下面两个是源码,windows直接下载nacos-server-2.2.0.zip即可
在这里插入图片描述
下载完之后,再看readme,里面告诉你启动方式,windows用cmd脚本启动,其实双击就行,但是因为默认的启动方式不是单机的,而是cluster集群模式。要么就是如下图一样在启动时后面跟上启动方式,要么直接修改脚本,将cluster修改为standalone
在这里插入图片描述
在这里插入图片描述
启动nacos,如下图所示
在这里插入图片描述
然后在本地浏览器中输入URL:http://localhost:8848/nacos,账号密码:nacos/nacos,即可打开
在这里插入图片描述
2、项目中引入nacos
在父项目中引入nacos,由于是Spring Cloud Alibaba的starter,使用Spring Cloud Alibaba的版本:2.2.9.RELEASE
上面提到了,Spring Cloud的引入放在了dependencyManagement中,dependencyManagement只声明依赖,不发生实际的引入,管理公共版本号。而nacos的引入在单独的dependencies中,无需显示的写入版本号,则直接从dependencyManagement的com.alibaba.cloud中继承,也可手写覆盖默认版本号。

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在这里插入图片描述

配置 nacos
在test1模块的properties中配置nacos地址与服务名称

spring.application.name=test1
spring.cloud.nacos.discovery.server-addr=localhost:8848

启动test1服务,刷新nacos即可看到服务
在这里插入图片描述
未完待续…

相关文章:

如何从0创建Spring Cloud Alibaba(多模块)

以一个父工程带两个Module&#xff08;test1、test2&#xff09;为例。 一、创建父工程 由于是模块化项目&#xff0c;那么父工程不需要实际的代码逻辑&#xff0c;因此无需创建src&#xff0c;那么可以有几种方式创建&#xff0c;例如&#xff1a; 使用Spring Initializr脚…...

【华为OD机试模拟题】用 C++ 实现 - 某公司组织招聘(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明招聘 | 某公司组织题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明...

Spring Cloud Sentinel实战(一)- Sentinel介绍

Sentinel介绍 什么是Sentinel 分布式系统的流量防卫兵&#xff1a;随着微服务的普及&#xff0c;服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点&#xff0c;在流量控制、断路、负载保护等多个领域开展工作&#xff0c;保障服务可靠性。 特点&#xff1a; 1. 2…...

基于SpringBoot的任务管理三种方式

文章目录前言一&#xff0c;异步任务1.1 无返回值异步任务调用1.2 有返回值异步任务调用二、定时任务2.1 背景介绍2.2 todo三、邮箱任务3.1 todo前言 开发 web 应用时&#xff0c;多数应用都具备任务调度功能&#xff0c;常见的任务包括异步任务、定时任务和邮件任务。我们以数…...

【华为OD机试模拟题】用 C++ 实现 - 查找单入口空闲区域(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明查找单入口空闲区域题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明示例...

普乐蛙部队vr训练设备军事训练vr体验馆设备元宇宙VR

案例一 地址&#xff1a;北京某部队 内置设备&#xff1a;乐享光轮、VR单车、暗黑战场、VR影院、游艺设备等 内容&#xff1a;部队增加VR体验设备&#xff0c;一、可以在强训练后&#xff0c;进行放松娱乐&#xff0c;也可以锻炼&#xff1b;二、VR设备可以模拟训练场景来进…...

大数据Hadoop教程-学习笔记05【Apache Hive DML语句与函数使用】

视频教程&#xff1a;哔哩哔哩网站&#xff1a;黑马大数据Hadoop入门视频教程 总时长&#xff1a;14:22:04教程资源: https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g 提取码: 6666【P001-P017】大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】【17p】【P018-P037】大…...

Unity动画转Three.js动画

一&#xff1a;应用场景 在工作中&#xff0c;由于算法给到的动画文件是Unity的.anim格式动画文件&#xff0c;这个格式不能直接在Web端用Three.js引擎运行。因此需要将.anim格式的动画文件转换为Three.js的AnimationClip动画对象。 二&#xff1a;.ANIM格式与AnimationClip对…...

07_MySQL的单行函数

1. 函数的理解1.1 什么是函数函数在计算机语言的使用中贯穿始终&#xff0c;函数的作用是什么呢&#xff1f;它可以把我们经常使用的代码封装起来&#xff0c;需要的时候直接调用即可。这样既提高了代码效率 &#xff0c;又提高了可维护性 。在 SQL 中我们也可以使用函数对检索…...

QML 第一个应用程序Window

1.创建QML工程 新建文件或者项目-->选择Qt Quick Application 然后生成了一个默认的Window 2.main.cpp中如何加载的qml文件 QQmlApplicationEngine提供了从单个QML文件加载应用程序的便捷方式。 此类结合了QQmlEngine和QQmlComponent&#xff0c;以提供一种方便的方式加载…...

RedisAI编译安装(一)

1.概述 RedisAI 是一个 Redis 模块&#xff0c;用于执行深度学习/机器学习模型并管理其数据。它的目的是成为模型服务的“主力”&#xff0c;通过为流行的 DL/ML 框架和无与伦比的性能提供开箱即用的支持。RedisAI 遵循数据局部性原则&#xff0c;最大限度地提高计算吞吐量并减…...

换掉 Maven,我就用Gradle,急速编译

相信使用Java的同学都用过Maven&#xff0c;这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven&#xff0c;可能会发现Maven有一些地方用的让人不太舒服&#xff1a; Maven的配置文件是XML格式的&#xff0c;假如你的项目依赖的包比较多&#xff0c;那么XML文件就…...

22.2.26打卡 Codeforces Round #853 (Div. 2)

A题极端考虑, 只要存在一个前缀数组的最大公约数小于等于2, 将其放在数组最前端, 那么保证能够满足题目要求数据范围这么小, 果断暴力Serval and Mochas Array题目描述Mocha likes arrays, and Serval gave her an array consisting of positive integers as a gift.Mocha thin…...

结构体字节对齐、偏移量

复习下struct的大小、成员偏移量offsetof&#xff0c;说下我的理解&#xff1a; 64位下默认对齐数default8原则1&#xff1a;struct中每一个成员变量tmp的对齐数realmin{default,tmp} struct Student {int num;//0char name[8];double score; } stu; 这个结构体stu中&#x…...

全网最全——Java 数据类型

一、数据类型方法论 程序本质上是对数据的处理&#xff08;逻辑运算&#xff09;&#xff0c;因此任何语言都需先解决如何表征【数据】这个核心概念。数据作为抽象的概念&#xff0c;天然的包含2个方面属性&#xff1a; 类型&#xff1a;类型决定了数据只能和同类型的数据进行…...

数据结构基础之动态数组

目录 前言 1、Java中的数组 2、实现动态数组 2.1、基本类结构设计 2.2、添加元素 2.3、查询&修改元素 2.4、包含&搜索&删除 2.5、数组扩容 前言 今天我们来学习一下关于数据结构的一些基础知识&#xff0c;数据结构研究的是数据如何在计算机中进行组织和存…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第九章 地图点、关键帧以及图结构

这一章主要讲了一些基本内容&#xff0c;包括ORB-SLAM2中地图点&#xff0c;关键帧图结构的问题 地图点和特征点的关系&#xff1f;有时候地图点对应不同帧上的特征点&#xff0c;特征点可以通过三角化得到地图点地图点的几个属性&#xff0c;平均观测方向&#xff0c;以及观测…...

网络安全——数据链路层安全协议(2)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.局域网数据链路层安全协议 1.IEEE 802.10 &#xff08;1&#xff09;IEE…...

【华为OD机试模拟题】用 C++ 实现 - 热点网络统计(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明热点网络统计【华为OD机试模拟题】题目输入输出描述示例一输入输出示例二输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出…...

人工智能学习07--pytorch09--LeNet

参考&#xff1a; 视频&#xff1a; https://www.bilibili.com/video/BV187411T7Ye/?spm_id_from333.999.0.0&vd_sourceb425cf6a88c74ab02b3939ca66be1c0d 博客&#xff1a;https://blog.csdn.net/STATEABC/article/details/123661612?utm_mediumdistribute.pc_feed_404.…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...