搭建SpringBoot多模块微服务项目脚手架(一)

这篇具有很好参考价值的文章主要介绍了搭建SpringBoot多模块微服务项目脚手架(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

搭建SpringBoot多模块微服务项目脚手架(一)

1.概述

这篇文章介绍下搭建SpringBoot多模块项目脚手架,他最大的优点就是配套了开发微服务业务所有的附属产品,可以直接开发业务节省了搭建环境时间。

因为脚手架内容很多,因此将它设计为一个系列介绍,共分为三篇文章。
第一篇文章
搭建SpringBoot多模块微服务框架

第二篇文章
封装《MybatisPlus》
封装《Swagger》
封装《自动生成代码工具》

第三篇文章
封装《接口统一返回信息模板》
封装《接口统一请求信息模板》
封装《统一异常信息模板》
封装《统一日志模板》

2.微服务环境搭建介绍

1.微服务环境描述

这个脚手架不只是创建一个springboot项目,这样是不是直接开发业务的,还需要集成插件像swagger、MybatisPlus,封装底层框架像接口请求、接口响应、日志、异常等模块。
脚手架的目标就是准备好一个可以直接写业务代码的环境,下载下来就可以开发业务不再为开发环境耗费时间。

2.搭建环境组件和版本清单
组件名称 版本号 描述
SpringBoot 2.6.1 springboot服务
MybatisPlus 3.0.5 ORM映射框架
velocity 2.0 mybatisplus自动生成代码
gson 2.8.2 操作json工具类

3.搭建父模块环境

3.1.创建springboot父工程

1.创建springboot

1.File—>New—>project
2.创建一个spring工程:

  • 点击 Spring Initializr 表示创建一个spring工程
  • Project SDK 选择我们安装的JAVA版本
  • Choose Initializr Service URL 选择默认 Default
    3.点击Next

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

1.填写spring项目信息

  • Group:组织信息,倒序方式填写公司域名。例如:com.bruce
  • Artifact: 模块名称 例如:parent_spring
  • Type: 选择包管理插件,有maven和gradle。例如 maven
  • Java Version: 选择自己开发语言的版本
  • Version:打包版本,默认
  • Name:打包名称,默认
  • Package:打包路径,默认

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

1.选择springBoot版本和组件

  • Spring Boot: 选择springBoot版本
  • Developer Tools: 选择开发组件,这里选一个 SpringWeb组件

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

1.确认项目名称和路径
project name: 项目名称,默认即可
project location: 项目创建位置,默认即可

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

2.配置maven和java

mac系统: 点击 IntelliJ IDEA 下拉框点击 Preferences
windows系统: 点击 File 下拉框点击Setting

点击maven,选择本地电脑配置的maven版本

  • Maven home directory: maven安装路径,例如:/usr/local/apache-maven-3.5.3
  • User setting file: maven配置文件地址,例如:/usr/local/apache-maven-3.5.3/conf/settings.xml
  • Local repository: 本地maven仓库地址,例如:/Users/edy/Documents/javawork/mavenRepository

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

点击maven下拉框点击 Importing 勾选 Import Maven projects automatically , 以后添加依赖包就会自动导入,不需要手动导入。
springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

点击File 下拉框点击 Project Structure 选择java开发语言版本

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

3.精简父模块

1.删除项目中不需要的内容包括

  • .mvn
  • HELP.md
  • mvnw
  • mvnw.cmd

2.删除src文件夹

4.pom文件配置

在项目中点击pom.xml 配置文件修改如下内容。
1.修改spring boot版本,改为我们使用的2.6.1版本
2.设置父模块为pom类型
3.父模块作为包管理器,它不使用依赖,因此在dependencies外面添加包管理标签 dependencyManagement
4.父模块用来管理子模块,它不会写代码因此需要将spring-boot-starter-webspring-boot-starter-test 依赖删除

修改完成后的pom.xml文件内容

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- 1.修改springboot版本 -->
        <version>2.6.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.bruce</groupId>
    <artifactId>parent_spring</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>parent_spring</name>
    <description>Demo project for Spring Boot</description>
    <!-- 2.设置父模块为pom类型-->
    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!-- 3.添加包管理标签 <dependencyManagement> -->
    <dependencyManagement>
    <dependencies>
    <!-- 4.删除 spring-boot-starter-web` 和 `spring-boot-starter-test` 依赖 -->
    </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

5.父模块结构

下面是配置完成的父模块工程结构

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

4.创建微服务子模块

创建子模块用来开发业务服务,我们是微服务因此每个子模块就是一个单独的服务。为了避免每个模块都重复引用相同的依赖,增加重复工作量,我们做了一个分层设计,设计理念如下。

微服务管理层:创建一个service模块用来管理所有的实现业务逻辑的微服务,在该模块中管理所有微服务需要的依赖包。
微服务实现层:在service模块下面创建多个子模块,每个模块都实现一个独立的业务逻辑功能,对外提供接口服务。

4.1.创建微服务管理层

1.创建service子模块

1.在父模块 parent_spring 右键点击 New 点击 Module 新建模块
2.选择创建Maven 类型模块

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

1.输入模块信息

  • Parent: 选择它要创建在哪个父模块下。 例如 parent_spring
  • Name: 新建模块的名称。 例如 service
  • Location: 新建模块创建的路径,默认即可

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

2.配置service子模块

1.service作为微服务管理层,它不需要写代码,因此删除src文件夹
2.修改pom.xml文件内容

  • 设置service模块为pom类型,因为它不写代码只管理依赖包。
  • 添加dependencies 依赖标签,并添加springbootweb 依赖
  • 添加build 设置打包规则

修改pom.xml文件完成后的内容

<?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">
    <parent>
        <artifactId>parent_spring</artifactId>
        <groupId>com.bruce</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>service</artifactId>
    <!-- 1.设置pom类型 -->
    <packaging>pom</packaging>

    <!-- 2.添加dependencies标签 -->
    <dependencies>
    	<!-- spring-boot-starter-web -->
    	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- 3.设置打包规则 -->
    <build>
        <resources>
            <resource>
                <!--设置的目录-->
                <directory>src/main/java</directory>
                <!--src/main/java目录下的所有后缀是xml文件打包,两个星表示多层目录,一个星表示一层目录下的xml文件-->
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

</project>

4.2.创建微服务实现层

1.创建微服务模块

1.在 service 模块右键点击 New 点击 Module 新建模块
2.选择创建Maven 类型模块
3.输入模块信息

  • Parent: 选择它要创建在哪个父模块下,注意这里一定要选择service模块。
  • Name: 新建模块的名称。 例如这个模块实现用户模块业务,因此定义名称为 servce_user
  • Location: 新建模块创建的路径,默认即可

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

2.创建服务配置文件

1.在service_user模块中点击 src -> main -> resources 文件夹,在该文件夹下新建配置文件application.properties
2.创建好配置文件后,如果图标不是一个小叶子,那么它没有被spring当做资源文件。
点击 File -> Project Structure , 点击Modules 选择 service_user 模块,选择该模中resources 文件夹,点击Resources后就被spring识别为资源文件。

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring
3.保存设置后,查看配置文件变为小叶子图标
springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

4.3.项目完整结构

1.项目完整架构

到这里多模块的spring项目工程结构就搭建完成了,下面看下这个工程的完整结构。

springboot脚手架,# Spring【SpringBoot】,spring boot,微服务,spring

2.每个模块pom配置文件

当我们创建了子模块后,maven 会自动在父模块的pom.xml 文件中modules 标签中添加子模块名称,用来建立父子模块管理关系。

1.parent_spring 模块 pom.xml文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!-- 1.修改springboot版本 -->
        <version>2.6.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.bruce</groupId>
    <artifactId>parent_spring</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>parent_spring</name>
    <description>Demo project for Spring Boot</description>
    <!-- 2.设置父模块为pom类型-->
    <packaging>pom</packaging>
    
	<!-- 自动添加了子模块service -->
    <modules>
        <module>service</module>
    </modules>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!-- 3.添加包管理标签 <dependencyManagement> -->
    <dependencyManagement>
    <dependencies>

    </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.service 模块 pom.xml文件

<?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">
    <parent>
        <artifactId>parent_spring</artifactId>
        <groupId>com.bruce</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>service</artifactId>
    <!-- 1.设置pom类型 -->
    <packaging>pom</packaging>
    <!-- 自动添加了子模块service_user -->
    <modules>
        <module>service_user</module>
    </modules>

    <!-- 2.添加dependencies标签 -->
    <dependencies>
    	<!-- spring-boot-starter-web -->
    	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- 3.设置打包规则 -->
    <build>
        <resources>
            <resource>
                <!--设置的目录-->
                <directory>src/main/java</directory>
                <!--src/main/java目录下的所有后缀是xml文件打包,两个星表示多层目录,一个星表示一层目录下的xml文件-->
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

</project>

3.service_user 模块 pom.xml文件文章来源地址https://www.toymoban.com/news/detail-698284.html

<?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">
    <parent>
        <artifactId>service</artifactId>
        <groupId>com.bruce</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>service_user</artifactId>


</project>

到了这里,关于搭建SpringBoot多模块微服务项目脚手架(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 快速搭建一个go语言web后端服务脚手架

    快速搭建一个go语言web后端服务脚手架 源码:https://github.com/weloe/go-web-demo web框架使用gin,数据操作使用gorm,访问控制使用casbin 首先添加一下自定义的middleware recover_control.go ,统一处理panic error返回的信息 access_control.go 使用casbin进行访问控制的中间件 reader.go 读取yaml配置文件

    2023年04月12日
    浏览(62)
  • vue-cli5脚手架搭建项目过程详解 -vue组件单元测试

    单元测试是对软件中的最小可测试单元进行测试。(最小可测试单元是要有结果产出的。例如某个方法,单独的某个操作) 单元测试其实是伴随着敏捷开发,它是对更快开发的一种追求。早发现错误比晚发现错误会更好,保证自己的代码符合要求 一: 搭建基于 jest 的 vue 单元

    2023年04月14日
    浏览(41)
  • 关于打包多模块SpringBoot项目并通过宝塔上传服务器

    打包 —— 如何打包多模块项目,参考b站up主:[喜欢编程的代先生] 的视频 总结:1. 对着视频里看一下父模块和各个子模块pom.xml文件关于打包工具的依赖是否正确。2. 从最底层开始打包,逐层向上,最后再合并打包。 部署 —— 打包好后,先把jar包上传到文件夹 运用java项目

    2024年02月11日
    浏览(32)
  • [golang 微服务] 7. go-micro框架介绍,go-micro脚手架,go-micro结合consul搭建微服务案例

    上一节讲解了 GRPC微服务集群 + Consul集群 + grpc-consul-resolver 相关的案例,知道了微服务之间通信采用的 通信协议 ,如何实现 服务的注册和发现 ,搭建 服务管理集群 ,以及服务与服务之间的 RPC通信方式 ,具体的内容包括: protobuf协议 , consul 及 docker部署consul集群 , GRPC框架 的

    2024年02月09日
    浏览(28)
  • 搭建大型分布式服务(四十六)利用mockito不启动SpringBoot项目下进行单元测试

    SpringBoot支持集成Mockito做单元测试,有时候SpringBoot有很多外部依赖,在本地很难启动或者启动时间很长,而我们只想对某个方法进行测试,需要怎样做呢? 一、本文要点 接前文,我们已经已介绍在两种mock模式下,怎样根据入参返回自定义mock结果,但都是通过启动SpringBoot项

    2024年02月06日
    浏览(35)
  • 如何快速搭建自己的阿里云服务器(宝塔)并且部署springboot+vue项目(全网最全)

    对于新手或者学生党来说,有时候就想租一个云服务器来玩玩或者练练手,duck不必花那么多钱去租个服务器。这些云服务厂商对学生和新手还是相当友好的。下面将教你如何快速搭建自己的阿里云服务器,完成云服务器的部署。 现在阿里云对于新用户来说,还是挺仗义的,

    2024年02月04日
    浏览(67)
  • 【Vue H5项目实战】从0到1的自助点餐系统—— 搭建脚手架(Vue3.2 + Vite + TS + Vant + Pinia + Node.js)

    H5 项目基于 Web 技术,可以在智能手机、平板电脑等移动设备上的浏览器中运行,无需下载和安装任何应用程序,且H5 项目的代码和资源可以集中在服务器端进行管理,只需更新服务器上的代码,即可让所有顾客访问到最新的系统版本。 本系列将以肯德基自助点餐页面为模板

    2024年02月13日
    浏览(38)
  • Idea+maven+springboot项目搭建系列--2 整合Rabbitmq完成客户端&服务器端消息收发

    前言:本文通过springBoot -maven 框架,对Rabbitmq 进行整合,完成客户端消息的发送和消费; 1 为什么要使用Rabbitmq: RabbitMQ 是一个可靠的、灵活的、开源的消息中间件,具有以下优点: 异步通信:RabbitMQ 支持异步通信,使得消息发送者和接收者能够异步处理,提高了系统性能和

    2024年02月07日
    浏览(43)
  • windows系统安装指定的vue/cli、node和npm;vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题

    记录vue/cli脚手架搭建项目所涉及的vue/cli、node、npm依赖版本等问题 先说依赖版本: vue/cli 3.12.0 node14.21.3 npm6.14.18 注意: node和npm需要版本匹配 ,也就是下载node安装包,就会自带安装npm,不可制定升级某个版本npm; 否则会导致 脚手架创建项目失败 和 vue项目启动失败 和 npm下

    2024年02月15日
    浏览(46)
  • Maven自定义脚手架(多module模块)+自定义参数

    视频教程:Maven保姆级教程 Maven入门教程(一):安装Maven环境 Maven入门教程(二):idea/Eclipse使用Maven Maven入门教程(三):Maven语法 Maven入门教程(四):Nexus私服 Maven入门教程(五):自定义脚手架 视频教程: Maven保姆级教程 脚手架是一个项目模板,包含常用的工程结构、代码。 脚手

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包