15.Springboot多模块配置

作者: admin | 创建时间: 2025-02-10 11:11:29 文章分类: java框架

文章简介: 在开发大型项目时,使用 Spring Boot 多模块配置可以将项目拆分成多个独立的模块,便于团队协作开发、代码管理和维护。以下为你详细介绍 Spring Boot 多模块项目的配置步骤。

一.新建一个SpringBoot的项目

二.删除src文件夹,由于是作为父项目,不需要src

三.新建模块

1.右键点击项目选择【新建】——>【新模块】新建自己需要的模块

2.创建自己需要的模块

四.配置pom文件

1.首先配置父项目的pom文件,共通的应用可以在父项目中统一引用

<?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>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.tms.blog</groupId>
    <artifactId>TBlog</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!--1.在此添加packaging,并将打包方式设置为pom-->
    <!--如果之前就存在此标签就直接将其修改为pom-->
    <packaging>pom</packaging>
    <name>TBlog</name>
    <description>Demo project for Spring Boot</description>

    <!--2.加入子模块信息,也就是maven中的聚合-->
    <modules>
        <module>Application</module>
        <module>dao</module>
        <module>domain</module>
        <module>infrastructure</module>
        <module>service</module>
        <module>webApp</module>
    </modules>


    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!-- 数据库 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--引入阿里巴巴druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.6</version>
        </dependency>
        <!--自启动Druid管理后台-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--json处理-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.56</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <!-- lang3 基本数值方法,对象反射,并发,创建和序列化以及系统属性-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.1</version>
        </dependency>
        <!--配置切面-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <!-- mybatis-plus-generator代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>p6spy</groupId>
            <artifactId>p6spy</artifactId>
            <version>3.8.2</version>
        </dependency>
        <!-- freemarker模板引擎 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.31</version>
        </dependency>
        <!-- 引入日志管理-->
        <!-- 排除 Spring-boot-starter 默认的日志配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 引入log4j2依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <!--引入Swagger3-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.6</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.0.RELEASE</version>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--如果没有fork配置,devtools不起作用,即项目修改后不会重新启动 -->
                    <fork>true</fork>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

2.配置子项目的pom文件

①.先配置基础建设层的pom文件,其他的大体都一样,只有Applicationpom文件有些区别

<?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>-->
    <!--        <version>2.6.2</version>-->
    <!--        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
    <!--    </parent>-->
    <!--1.将这里的父模块由springframework改为我们的TBlog-->
    <parent>
        <groupId>com.tms.blog</groupId>
        <artifactId>TBlog</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath> <!-- 父pom路径 -->
    </parent>
    <!--2.groupId和version继承父模块,可以删除。当然name和description也不是必须的-->
    <!--   <groupId>com.tms.tblog</groupId>-->
    <artifactId>infrastructure</artifactId>
    <!--   <version>0.0.1-SNAPSHOT</version>-->
    <name>infrastructure</name>
    <description>Demo project for Spring Boot</description>
    <!--3.properties会继承父模块中的配置,这里也可以删除-->
    <!--    <properties>-->
    <!--        <java.version>1.8</java.version>-->
    <!--    </properties>-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--4.如果没有使用特殊的插件,这里直接继承父pom中的插件就可以了-->
    <build>
        <plugins>
            <!--            <plugin>-->
            <!--                <groupId>org.springframework.boot</groupId>-->
            <!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
            <!--            </plugin>-->
        </plugins>
    </build>

</project>

②.Application模块的pom文件配置

<?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>-->
    <!--        <version>2.6.2</version>-->
    <!--        <relativePath/> &lt;!&ndash; lookup parent from repository &ndash;&gt;-->
    <!--    </parent>-->
    <!--1.将这里的父模块由springframework改为我们的TBlog-->
    <parent>
        <groupId>com.tms.blog</groupId>
        <artifactId>TBlog</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath> <!-- 父pom路径 -->
    </parent>
    <!--2.groupId和version继承父模块,可以删除。当然name和description也不是必须的-->
    <!--   <groupId>com.tms.tblog</groupId>-->
    <artifactId>dao</artifactId>
    <!--   <version>0.0.1-SNAPSHOT</version>-->
    <name>dao</name>
    <description>Demo project for Spring Boot</description>
    <!--3.properties会继承父模块中的配置,这里也可以删除-->
    <!--    <properties>-->
    <!--        <java.version>1.8</java.version>-->
    <!--    </properties>-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--4.如果没有使用特殊的插件,这里直接继承父pom中的插件就可以了-->
    <build>
        <plugins>
            <!--            <plugin>-->
            <!--                <groupId>org.springframework.boot</groupId>-->
            <!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
            <!--            </plugin>-->
        </plugins>
    </build>

</project>

3.配置yml文件,由于是配置Application为启动程序,那么yml文件配置到Application下就可以例如:

spring:
  # 数据库
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/tblog?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    username: root
    password: root
  # redis配置
  redis:
    # 地址
    host: 127.0.0.1
    # 端口(默认为6379)
    port: 6379
    # Redis服务器连接密码(默认为空)
    password:
    # 连接超时时间
    timeout: 10s
    lettuce:
      pool:
        # 连接池中的最小空闲连接
        min-idle: 0
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池的最大数据库连接数
        max-active: 8
        # #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1m

五.效果展示

1.在Application里面建一个controller

package com.tms.tblog.application.controller;

import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
@Log4j2
@RequestMapping("/test")
public class TestController {
    @GetMapping(value = "/test")
    public String test(HttpServletRequest req) {
        return "Hello Word";
    }
}

2.运行项目,在浏览器中输入地址,可以看到浏览器上显示Hello Word。

评论

目录

    关闭