搭建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.删除项目中不需要的内容包括
.mvnHELP.mdmvnwmvnw.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>
                

















