SpringBoot(一)、基于 Maven 构建多模块项目
分布式项目搭建规范
规范地搭建微服务项目将有助于应用的开发、维护以及代码的理解。目前应用比较广泛的是基于 Maven 构建多模块的方式,这种方式搭建的每个模块各司其职,负责应用中不同的功能,同时每个模块采用层级依赖的方式,最终构建成一个聚合型的 Maven 项目。
本项目将结构划分成了 4 层,结构如下图。当然,随着实际情况,后续也可按照所需自由划分。
技术选用
- jdk1.8
- Idea2020
- Maven
- Springboot
- fastjson
- lombok
相关工具的安装和使用这里不再赘述。
使用 idea 构建 Maven 父项目
首先,我们先通过 Idea 构建父项目 course,步骤如下:
(1)打开开发工具 Idea,然后选择菜单栏中“File”的“New”命令,进入“New Project”,即创建新项目的界面
(2)单击“Next”按钮,进入 Maven 多模块项目的命名界面,在这里建议 Maven 项目的命名尽量简洁、规范,单击“Finish"完成
(3)选中父项目的 src 文件夹,右键点击删除。
使用 idea 构建子模块
(1)右键父项目 course,新建模块 sdk。
(2)修改新模块名称为 sdk,点击 finish 完成。
(3)循环上述步骤,依次创建模块 sdk,dao,service,server。创建完成后项目目录如下:
(4)查看父项目的 pom 文件,可以看到其引入的四个模块。
(5)查看子项目 sdk 的 pom 文件,可以看到其引入的父项目。
父项目设置统一资源和版本控制
在父项目 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 文件内容如下:
为各个模块引入相关依赖
本项目将在各个子模块下引入 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 文件如下图:
(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 文件如下图:
(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 文件完整如下图:
(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 文件如下图:
(3) 测试 springboot
在 server 模块新建包 com.to.jing.course.server,包下新建 Appserver.java。代码如下:
完整项目结构图如下:
点击运行 AppServer,再浏览器中打开地址 http://localhost:8080/,结果如下图:
引入 springboot 依赖成功。
源码地址
https://github.com/ToJing/spring-boot-course tagV1.0
结语
该章节讲解的比较详细,后续会视情况进行简略。关于 Maven 构建多项目其中的 pom 文件的编写,里面许多标签的含义大家可以深入了解下。
参考
- 书籍《基于 Springboot 实现 Java 分布式中间件开发入门与实战》
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于