当前位置: 代码网 > it编程>编程语言>Java > SpringBoot单体多模块项目环境搭建

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

2026年02月12日 Java 我要评论
快速搭建一个基于springboot + mybatis plus 的多模块的单体架构项目。1、创建maven子模块按照如下目录结构创建一个多模块的maven工程。 lease ├── common(

快速搭建一个基于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单体多模块搭建内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com