搭建SpringBoot多模块微服务项目脚手架(一)
文章目录
- 搭建SpringBoot多模块微服务项目脚手架(一)
- 1.概述
- 2.微服务环境搭建介绍
- 1.微服务环境描述
- 2.搭建环境组件和版本清单
- 3.搭建父模块环境
- 3.1.创建springboot父工程
- 1.创建springboot
- 2.配置maven和java
- 3.精简父模块
- 4.pom文件配置
- 5.父模块结构
- 4.创建微服务子模块
- 4.1.创建微服务管理层
- 1.创建service子模块
- 2.配置service子模块
- 4.2.创建微服务实现层
- 1.创建微服务模块
- 4.3.项目完整结构
- 1.项目完整架构
- 2.每个模块pom配置文件
1.概述
这篇文章介绍下搭建SpringBoot多模块项目脚手架,他最大的优点就是配套了开发微服务业务所有的附属产品,可以直接开发业务节省了搭建环境时间。
因为脚手架内容很多,因此将它设计为一个系列介绍,共分为三篇文章。
第一篇文章
搭建SpringBoot多模块微服务框架
第二篇文章
封装《MybatisPlus》
封装《Swagger》
封装《自动生成代码工具》
第三篇文章
封装《接口统一返回信息模板》
封装《接口统一请求信息模板》
封装《统一异常信息模板》
封装《统一日志模板》
2.微服务环境搭建介绍
1.微服务环境描述
这个脚手架不只是创建一个springboot项目,这样是不是直接开发业务的,还需要集成插件像swagger、MybatisPlus,封装底层框架像接口请求、接口响应、日志、异常等模块。
脚手架的目标就是准备好一个可以直接写业务代码的环境,下载下来就可以开发业务不再为开发环境耗费时间。
2.搭建环境组件和版本清单
组件名称 | 版本号 |
---|---|
SpringBoot | 2.6.1 |
MybatisPlus | 3.0.5 |
swagger | 3.0.0 |
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
1.填写spring项目信息
- Group:组织信息,倒序方式填写公司域名。例如:com.bruce
- Artifact: 模块名称 例如:parent_spring
- Type: 选择包管理插件,有maven和gradle。例如 maven
- Java Version: 选择自己开发语言的版本
- Version:打包版本,默认
- Name:打包名称,默认
- Package:打包路径,默认
1.选择springBoot版本和组件
- Spring Boot: 选择springBoot版本
- Developer Tools: 选择开发组件,这里选一个 SpringWeb组件
1.确认项目名称和路径
project name: 项目名称,默认即可
project location: 项目创建位置,默认即可
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
点击maven
下拉框点击 Importing
勾选 Import Maven projects automatically
, 以后添加依赖包就会自动导入,不需要手动导入。
点击File
下拉框点击 Project Structure
选择java开发语言版本
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-web
和 spring-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.父模块结构
下面是配置完成的父模块工程结构
4.创建微服务子模块
创建子模块用来开发业务服务,我们是微服务因此每个子模块就是一个单独的服务。为了避免每个模块都重复引用相同的依赖,增加重复工作量,我们做了一个分层设计,设计理念如下。
微服务管理层:创建一个service
模块用来管理所有的实现业务逻辑的微服务,在该模块中管理所有微服务需要的依赖包。
微服务实现层:在service
模块下面创建多个子模块,每个模块都实现一个独立的业务逻辑功能,对外提供接口服务。
4.1.创建微服务管理层
1.创建service子模块
1.在父模块 parent_spring
右键点击 New
点击 Module
新建模块
2.选择创建Maven
类型模块
1.输入模块信息
- Parent: 选择它要创建在哪个父模块下。 例如 parent_spring
- Name: 新建模块的名称。 例如 service
- Location: 新建模块创建的路径,默认即可
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: 新建模块创建的路径,默认即可
4.3.项目完整结构
1.项目完整架构
到这里多模块的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
文件
<?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>