SpringBoot( 一)、基于 Maven 构建多模块项目

本贴最后更新于 1351 天前,其中的信息可能已经渤澥桑田

SpringBoot(一)、基于 Maven 构建多模块项目

分布式项目搭建规范

规范地搭建微服务项目将有助于应用的开发、维护以及代码的理解。目前应用比较广泛的是基于 Maven 构建多模块的方式,这种方式搭建的每个模块各司其职,负责应用中不同的功能,同时每个模块采用层级依赖的方式,最终构建成一个聚合型的 Maven 项目。

本项目将结构划分成了 4 层,结构如下图。当然,随着实际情况,后续也可按照所需自由划分。

image.png

技术选用

  • jdk1.8
  • Idea2020
  • Maven
  • Springboot
  • fastjson
  • lombok

相关工具的安装和使用这里不再赘述。

使用 idea 构建 Maven 父项目

首先,我们先通过 Idea 构建父项目 course,步骤如下:
(1)打开开发工具 Idea,然后选择菜单栏中“File”的“New”命令,进入“New Project”,即创建新项目的界面

image.png(2)单击“Next”按钮,进入 Maven 多模块项目的命名界面,在这里建议 Maven 项目的命名尽量简洁、规范,单击“Finish"完成

image.png
(3)选中父项目的 src 文件夹,右键点击删除。

image.png

使用 idea 构建子模块

(1)右键父项目 course,新建模块 sdk。

image.png
(2)修改新模块名称为 sdk,点击 finish 完成。
image.png
(3)循环上述步骤,依次创建模块 sdk,dao,service,server。创建完成后项目目录如下:

image.png
(4)查看父项目的 pom 文件,可以看到其引入的四个模块。

image.png
(5)查看子项目 sdk 的 pom 文件,可以看到其引入的父项目。

image.png

父项目设置统一资源和版本控制

在父项目 course 的 pom 文件下添加如下代码:

    <!-- 定义项目整体资源的编码为UTF-8以及JDK的版本为1.8 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>

添加后 pom 文件内容如下:

image.png

为各个模块引入相关依赖

本项目将在各个子模块下引入 fastjson 和 lombok,通过父项目来控制统一的版本管理。
(1)在父项目中 pom 引入如下代码定义版本。

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <course.fastjson.version>1.1.30</course.fastjson.version>
        <course.lombok.version>1.18.0</course.lombok.version>
  
    </properties>

在 propertises 中增加了两行 fastjson.version 和 lombok.version。完整 pom 文件如下图:

image.png
(2)在子项目 sdk 中引入依赖。添加如下代码:

<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${course.fastjson.version}</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${course.lombok.version}</version>
            <scope>provided</scope>
        </dependency>


    </dependencies>

完整 pom 文件如下图:
image.png
(3)同理,分别为 server,service,dao 引入依赖。

为 server 子模块引入 springboot 依赖

server 模块其实是一个 springboot 项目,所以需要引入 springboot 依赖。
(1)在父项目 course 中添加 springboot 版本,在 properties 中添加如下代码:

<course.spring-boot.sersion>2.3.5.RELEASE</course.spring-boot.sersion>

父项目 pom 文件完整如下图:
image.png
(2)在 server 模块的 pom 文件添加 springboot 依赖,代码如下:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${course.spring-boot.sersion}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
 <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${course.fastjson.version}</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${course.lombok.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${course.spring-boot.sersion}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>${course.spring-boot.sersion}</version>
        </dependency>
    </dependencies>

关于 dependencyManagement 与 dependencies 标签的异同读者有兴趣的可以自行了解。
上述代码中在 fastjson 和 lombok 基础上添加了 springboot 依赖。server 的 pom 文件如下图:
image.png
(3) 测试 springboot
在 server 模块新建包 com.to.jing.course.server,包下新建 Appserver.java。代码如下:

package com.to.jing.course.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

包下 com.to.jing.course.server 再建一个包 controller,新建 HelloController.java,代码如下:

package com.to.jing.course.server.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {
    @RequestMapping("/")
    @ResponseBody
    public String hello(){
        return "hello,world";
    }
}

完整项目结构图如下:

image.png

点击运行 AppServer,再浏览器中打开地址 http://localhost:8080/,结果如下图:
image.png
引入 springboot 依赖成功。

源码地址

https://github.com/ToJing/spring-boot-course tagV1.0

结语

该章节讲解的比较详细,后续会视情况进行简略。关于 Maven 构建多项目其中的 pom 文件的编写,里面许多标签的含义大家可以深入了解下

参考

  • 书籍《基于 Springboot 实现 Java 分布式中间件开发入门与实战》
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1458 回帖 • 109 关注
2 操作
TOJing 在 2020-11-09 14:38:17 更新了该帖
TOJing 在 2020-11-06 11:49:16 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...