当前位置: 首页 > 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即可看到服务
在这里插入图片描述
未完待续…

http://www.lryc.cn/news/21859.html

相关文章:

  • 【华为OD机试模拟题】用 C++ 实现 - 某公司组织招聘(2023.Q1)
  • Spring Cloud Sentinel实战(一)- Sentinel介绍
  • 基于SpringBoot的任务管理三种方式
  • 【华为OD机试模拟题】用 C++ 实现 - 查找单入口空闲区域(2023.Q1)
  • 普乐蛙部队vr训练设备军事训练vr体验馆设备元宇宙VR
  • 大数据Hadoop教程-学习笔记05【Apache Hive DML语句与函数使用】
  • Unity动画转Three.js动画
  • 07_MySQL的单行函数
  • QML 第一个应用程序Window
  • RedisAI编译安装(一)
  • 换掉 Maven,我就用Gradle,急速编译
  • 22.2.26打卡 Codeforces Round #853 (Div. 2)
  • 结构体字节对齐、偏移量
  • 全网最全——Java 数据类型
  • 数据结构基础之动态数组
  • 【跟我一起读《视觉惯性SLAM理论与源码解析》】第九章 地图点、关键帧以及图结构
  • 网络安全——数据链路层安全协议(2)
  • 【华为OD机试模拟题】用 C++ 实现 - 热点网络统计(2023.Q1)
  • 人工智能学习07--pytorch09--LeNet
  • java泛型编程初识
  • 代码随想录算法训练营 || 贪心算法 1005 134 135
  • Spring框架面试题
  • 纯x86汇编实现的多线程操作系统实践 - 第五章 AP的守护执行
  • 2023年全国最新高校辅导员精选真题及答案7
  • 使用windwow windbg 吃透64位分页内存管理
  • Java知识复习(五)JVM虚拟机
  • 房屋出租管理系统
  • 2023年全国最新食品安全管理员精选真题及答案6
  • C++中的文件操作
  • 监控生产环境中的机器学习模型