SpringBoot单体多模块项目环境搭建

 更新时间:2026年02月12日 10:57:42   作者:我怎么想不到  
本文主要介绍了SpringBoot单体多模块项目环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

快速搭建一个基于SpringBoot + Mybatis Plus 的多模块的单体架构项目。

1、创建Maven子模块

按照如下目录结构创建一个多模块的Maven工程。

 lease
 ├── common(公共模块——工具类、公用配置等)
 │   ├── pom.xml
 │   └── src
 ├── model(数据模型——与数据库相对应地实体类)
 │   ├── pom.xml
 │   └── src
 ├── web(Web模块)
 │   ├── pom.xml
 │   ├── web-admin(后台管理系统Web模块——包含mapper、service、controller)
 │   │   ├── pom.xml
 │   │   └── src
 │   └── web-app(移动端Web模块——包含mapper、service、controller)
 │       ├── pom.xml
 │       └── src
 └── pom.xml

步骤1:创建项目根模块

 <?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">
 ​
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.ghm</groupId>
     <artifactId>JavaPracKit</artifactId>
     <version>1.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 ​
     <!-- 子模块 -->
     <modules>
         <module>common</module>
         <module>model</module>
         <module>web</module>
     </modules>
 ​
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 ​
 </project>

步骤2:创建common子模块

 <?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">
     
     <modelVersion>4.0.0</modelVersion>
     
     <parent>
         <groupId>com.ghm</groupId>
         <artifactId>JavaPracKit</artifactId>
         <version>1.0-SNAPSHOT</version>
     </parent>
 ​
     <artifactId>common</artifactId>
 ​
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 ​
 </project>

步骤3:创建model子模块

 <?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">
     
     <modelVersion>4.0.0</modelVersion>
     
     <parent>
         <groupId>com.ghm</groupId>
         <artifactId>JavaPracKit</artifactId>
         <version>1.0-SNAPSHOT</version>
     </parent>
 ​
     <artifactId>model</artifactId>
 ​
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 ​
 </project>

步骤4:创建web子模块

 <?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">
     
     <modelVersion>4.0.0</modelVersion>
 ​
     <parent>
         <groupId>com.ghm</groupId>
         <artifactId>JavaPracKit</artifactId>
         <version>1.0-SNAPSHOT</version>
     </parent>
 ​
     <artifactId>web</artifactId>
     <packaging>pom</packaging>
 ​
     <!--  子模块  -->
     <modules>
         <module>admin</module>
     </modules>
 ​
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 ​
     <dependencies>
 ​
         <!--    引入common模块    -->
         <dependency>
             <groupId>com.ghm</groupId>
             <artifactId>common</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
     </dependencies>
 ​
 </project>

步骤5:创建web-admin子模块

 <?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">
     
     <modelVersion>4.0.0</modelVersion>
     
     <parent>
         <groupId>com.ghm</groupId>
         <artifactId>web</artifactId>
         <version>1.0-SNAPSHOT</version>
     </parent>
 ​
     <artifactId>admin</artifactId>
 ​
     <properties>
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 ​
 </project>

2、SpringBoot配置

步骤1:配置pom工程

在父工程的pom.xml文件中增加如下内容:

 <!-- 继承Spring Boot父项目 -->
 <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>3.0.5</version>
     <relativePath/>
 </parent>
 ​
 <!-- 注意:直接替换pom文件中原有的properties -->
 <properties>
     <maven.compiler.source>17</maven.compiler.source>
     <maven.compiler.target>17</maven.compiler.target>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <mybatis-plus.version>3.5.3.1</mybatis-plus.version>
     <swagger.version>2.9.2</swagger.version>
     <jwt.version>0.11.2</jwt.version>
     <easycaptcha.version>1.6.2</easycaptcha.version>
     <minio.version>8.2.0</minio.version>
     <knife4j.version>4.1.0</knife4j.version>
     <aliyun.sms.version>2.0.23</aliyun.sms.version>
 </properties>
 ​
 <!--配置dependencyManagement统一管理依赖版本-->
 <dependencyManagement>
     <dependencies>
         <!--mybatis-plus-->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>${mybatis-plus.version}</version>
         </dependency>
 ​
         <!--knife4j文档-->
         <dependency>
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
             <version>${knife4j.version}</version>
         </dependency>
 ​
         <!--JWT登录认证相关-->
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
             <artifactId>jjwt-api</artifactId>
             <version>${jwt.version}</version>
         </dependency>
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
             <artifactId>jjwt-impl</artifactId>
             <scope>runtime</scope>
             <version>${jwt.version}</version>
         </dependency>
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
             <artifactId>jjwt-jackson</artifactId>
             <scope>runtime</scope>
             <version>${jwt.version}</version>
         </dependency>
 ​
         <!--图形验证码-->
         <dependency>
             <groupId>com.github.whvcse</groupId>
             <artifactId>easy-captcha</artifactId>
             <version>${easycaptcha.version}</version>
         </dependency>
 ​
         <!--对象存储,用于存储图像等非结构化数据-->
         <dependency>
             <groupId>io.minio</groupId>
             <artifactId>minio</artifactId>
             <version>${minio.version}</version>
         </dependency>
 ​
         <!--阿里云短信客户端,用于发送短信验证码-->
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>dysmsapi20170525</artifactId>
             <version>${aliyun.sms.version}</version>
         </dependency>
     </dependencies>
 </dependencyManagement>

web模块的pom.xml文件中增加如下内容:

 <!--包含spring web相关依赖-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 ​
 <!--包含spring test相关依赖-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     <scope>test</scope>
 </dependency>
 ​
 <!-- Spring Boot Maven插件,用于打包可执行的JAR文件 -->
 <build>
     <plugins>
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
 </build>

步骤2:创建application.yml文件

web-admin模块src/main/resources目录下创建application.yml配置文件,内容如下:

server:
  port: 8080

步骤3: 创建SpringBoot启动类

web-admin模块下创建com.atguigu.lease.AdminWebApplication类,内容如下:

@SpringBootApplication
public class AdminWebApplication {
    public static void main(String[] args) {
        SpringApplication.run(AdminWebApplication.class, args);
    }
}

3、Mybatis-Plus配置

Mybatis-Plus为公用工具,故将其配置于common模块。具体配置可参考其官方文档

步骤1:pom文件配置

common模块的pom.xml文件中增加如下内容:

<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>

<!--mysql驱动-->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
</dependency>

model模块的pom.xml文件中增加如下内容:

因为model模块下的实体类中需要配置Mybatis-Plus相关注解,故也需引入Mybatis-Plus依赖

<!--mybatis-plus-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>

步骤2:application.yml配置

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:mysql://<hostname>:<port>/<database>?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
    username: <username>
    password: <password>
    hikari:
      connection-test-query: SELECT 1 # 自动检测连接
      connection-timeout: 60000 #数据库连接超时时间,默认30秒
      idle-timeout: 500000 #空闲连接存活最大时间,默认600000(10分钟)
      max-lifetime: 540000 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
      maximum-pool-size: 12 #连接池最大连接数,默认是10
      minimum-idle: 10 #最小空闲连接数量
      pool-name: SPHHikariPool # 连接池名称
      
#用于打印框架生成的sql语句,便于调试
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

注意:需根据实际情况修改hostnameportdatabaseusernamepassword

步骤3:添加配置类

common模块下创建com.atguigu.lease.common.mybatisplus.MybatisPlusConfiguration类,内容如下:

@Configuration
@MapperScan("com.atguigu.lease.web.*.mapper")
public class MybatisPlusConfiguration {
  
}

注意@MapperScan()的包路径需要根据实际情况进行修改。

4、Knife4j配置

步骤1:pom文件配置

web模块的pom.xml文件添加如下内容

因为web-app模块同样需要 依赖,故在两个的父工程引入依赖即可

<!-- knife4j -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

model模块的pom.xml文件添加上述内容

因为model模块下的实体类需要配置Knife4j相关注解,故也需引入Knife4j依赖

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
</dependency>

步骤2:添加配置类

后台管理系统和移动端的接口配置并不相同,所以需各自编写一个配置类。在web-admin模块下创建com.atguigu.lease.web.admin.custom.config.Knife4jConfiguration类,内容如下:

@Configuration
public class Knife4jConfiguration {

    @Bean
    public OpenAPI customOpenAPI() {

        return new OpenAPI().info(
                new Info()
                        .title("后台管理系统API")
                        .version("1.0")
                        .description("后台管理系统API"));
    }
    
    @Bean
    public GroupedOpenApi systemAPI() {

        return GroupedOpenApi.builder().group("系统信息管理").
                pathsToMatch(
                        "/admin/system/**"
                ).
                build();
    }

    @Bean
    public GroupedOpenApi loginAPI() {

        return GroupedOpenApi.builder().group("后台登录管理").
                pathsToMatch(
                        "/admin/login/**",
                        "/admin/info"
                ).
                build();
    }
    
    @Bean
    public GroupedOpenApi apartmentAPI() {

        return GroupedOpenApi.builder().group("公寓信息管理").
                pathsToMatch(
                        "/admin/apartment/**",
                        "/admin/room/**",
                        "/admin/label/**",
                        "/admin/facility/**",
                        "/admin/fee/**",
                        "/admin/attr/**",
                        "/admin/payment/**",
                        "/admin/region/**",
                        "/admin/term/**",
                        "/admin/file/**"
                ).build();
    }
    @Bean
    public GroupedOpenApi leaseAPI() {
        return GroupedOpenApi.builder().group("租赁信息管理").
                pathsToMatch(
                        "/admin/appointment/**",
                        "/admin/agreement/**"
                ).build();
    }
    @Bean
    public GroupedOpenApi userAPI() {
        return GroupedOpenApi.builder().group("平台用户管理").
                pathsToMatch(
                        "/admin/user/**"
                ).build();
    }
}

注意pathsToMatch参数需要根据实际情况进行配置。

到此这篇关于SpringBoot单体多模块项目环境搭建的文章就介绍到这了,更多相关SpringBoot单体多模块搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jenkins如何设置定时发布

    Jenkins如何设置定时发布

    文章讲述了如何在Jenkins中设置定时发布项目,首先找到要定时启动的项目,然后点击配置,选择构建时间,作者分享了这一过程,希望对大家有所帮助
    2026-01-01
  • Java连接MySQL数据库命令行程序过程

    Java连接MySQL数据库命令行程序过程

    SQL编程包括两种形式,一种是过程化编程,主要通过数据库交互式工具,通过存储过程、触发器、函数等形式的编程;另一种是嵌入式SQL编程,将SQL语句嵌入到高级开发语言,完成数据的各种操作
    2021-10-10
  • Java SpringBoot模板引擎之 Thymeleaf入门详解

    Java SpringBoot模板引擎之 Thymeleaf入门详解

    jsp有着强大的功能,能查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示及交互等,包括能写Java代码。但是,SpringBoot首先是以jar的方式,不是war;其次我们的tomcat是嵌入式的,所以现在默认不支持jsp
    2021-10-10
  • Java MyBatis之Mapper代理详解

    Java MyBatis之Mapper代理详解

    这篇文章主要介绍了Java web中MyBatis的mapper代理,文中有详细的代码示例,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2023-04-04
  • 深入理解Java编程线程池的实现原理

    深入理解Java编程线程池的实现原理

    这篇文章主要介绍了深入理解Java编程线程池的实现原理,涉及ThreadPoolExecutor类,线程池实现原理及示例等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 使用logback屏蔽一些包的日志

    使用logback屏蔽一些包的日志

    这篇文章主要介绍了使用logback屏蔽一些包的日志,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 使用java实现云端资源共享小程序的代码

    使用java实现云端资源共享小程序的代码

    这篇文章主要介绍了用java写一个云端资源共享小程序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Java连接数据库实现方式

    Java连接数据库实现方式

    文章讲述了Java连接MySQL数据库的详细步骤,包括下载和导入JDBC驱动、创建数据库和表、以及编写连接和读取数据的代码
    2024-11-11
  • java中MultipartFile互转File的方法

    java中MultipartFile互转File的方法

    本文主要介绍了java中MultipartFile互转File的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Spring注解配置AOP导致通知执行顺序紊乱解决方案

    Spring注解配置AOP导致通知执行顺序紊乱解决方案

    这篇文章主要介绍了Spring注解配置AOP导致通知执行顺序紊乱解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论