当前位置: 首页 > 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.…...

别光知道Levenshtein!Python实战:用Jaro-Winkler算法搞定人名地址模糊匹配

别光知道Levenshtein&#xff01;Python实战&#xff1a;用Jaro-Winkler算法搞定人名地址模糊匹配 在数据清洗和用户输入处理的场景中&#xff0c;字符串相似度计算是个绕不开的话题。当我们需要匹配"张三丰"和"张三風"时&#xff0c;传统的Levenshtein距离…...

基于STM32与ADC的锂电池电量监测系统设计

1. 锂电池电量监测为什么需要STM32和ADC&#xff1f; 做嵌入式开发的朋友应该都遇到过这样的需求&#xff1a;设备用锂电池供电&#xff0c;需要实时显示剩余电量。比如手持设备、智能家居控制器或者无人机&#xff0c;电量显示都是刚需功能。但锂电池的特性决定了直接测量电量…...

接近开关和光电开关接头:A编码M12一体式防水连接器规格解析

在工业自动化现场&#xff0c;接近开关与光电开关是应用最广泛的传感器。其标准接口——A编码M12一体式防水连接器&#xff08;预铸线缆型&#xff09;&#xff0c;通过统一的机械尺寸与电气定义&#xff0c;实现了传感器的即插即用与高可靠连接。一、规格标准与接口定义A编码M…...

VR视频转换终极指南:让3D内容在普通设备上轻松播放

VR视频转换终极指南&#xff1a;让3D内容在普通设备上轻松播放 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirro…...

2024版idea引入lombok总是报错解决方法

在创建SpringBoot文件时不勾选lombok&#xff0c;然后自己手动导入lombok并指定版本玛德这idea的SpringBoot中导入lombok后我使用Data总是说我的get和set方法有毛病&#xff0c;一怒之下我直接就是疯狂搜如何解决lombok引用问题&#xff0c;结果不是让我去勾选一个东西就是让我…...

利用快马平台快速构建mcporter数据转换工具原型,十分钟验证数据管道设计

最近在做一个数据迁移项目时&#xff0c;遇到了需要频繁转换数据格式的需求。传统方式下&#xff0c;光是搭建开发环境、编写基础代码就要花上大半天时间。这次尝试用InsCode(快马)平台快速构建了一个mcporter数据转换工具原型&#xff0c;整个过程出乎意料地顺畅。 明确核心需…...

Windows任务栏透明化技术解析:TranslucentTB架构设计与优化实践

Windows任务栏透明化技术解析&#xff1a;TranslucentTB架构设计与优化实践 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentT…...

3步搞定B站音频提取:BilibiliDown开源工具的终极指南

3步搞定B站音频提取&#xff1a;BilibiliDown开源工具的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi…...

Venera:5大革新功能打造无缝全平台漫画阅读体验

Venera&#xff1a;5大革新功能打造无缝全平台漫画阅读体验 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera Venera 是一款开源跨平台漫画应用&#xff0c;专为漫画爱好者打造全设备同步的阅读解决方案。无论你使用 Windows、…...

2026年主流接口测试平台慢因分析与选型参考

2026年主流接口测试平台慢因分析与选型参考 核心观点摘要 2026年接口测试响应慢核心诱因可归为三类&#xff1a;工具本身并发调度能力不足、协议适配不全导致额外转码开销、缺少AI智能链路优化能力&#xff0c;多数企业接口测试效率低与工具选型不当直接相关。本次盘点覆盖当前…...