【SpringBoot】还不会SpringBoot项目模块分层?来这手把手教你
前言
🍊缘由
经常看到网上很多优秀的开源项目中,代码简洁,模块分层完美。反观自己代码层级混乱,,却不知如何整理分层。此文手把手教你一步一步创建模块,左手右手一个慢动作。结合本人实际开发及个人项目中分层思路的分享,大神请勿喷。
⏲️本文阅读时长
约25分钟
🎯主要目标
- 熟练掌握SpringBoot项目分层思路,丝滑拆分模块
- 熟悉代码层级依赖,规范化管理模块分布
- 手把手实战学习,理论实践相结合
👨🎓试用人群
- 对于Springboot熟悉但是不知道合理分层小白
- 有自己分层思路可以互相分享学习
🎁快速链接
公众号:JavaDog程序狗
在公众号,发送【分层】 ,无任何套路即可获得
或访问https://blog.javadog.net/archives/boot-module
🍩水图
下图反面教材,传统单体应用,结构臃肿
下图分层截选自本人的一个小项目,模块清晰,分工明确
我们要实现的小栗子的分层
正文
🥫1.IDEA新建项目
起名第一步,一个好名字,说不定是个好的开始
假如我们的项目是个聊天相关的项目,英文对应chat,所以定义项目名为chat-boot,其他的以此效仿
点击New->project
选择Maven项目,并选择合适JDK版本,点击Next
录入项目名称,并填写GAV坐标,点击Finish
删除无用文件及目录,如src目录和*.iml文件
删除后项目目录
修改pom.xml中依赖,增加spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
</parent>
🌭2.创建子模块-dependencies(依赖层)
右击项目chat-boot,new ->Moudle新建模块chat-boot-dependencies
选择对应Module SDK版本,本人选择jdk1.8
填写子模块名 chat-boot-dependencies,然后检查对应GAV,点击Finish
生成子模块chat-boot-dependencies如下图
删除chat-boot-dependencies下无用文件及目录,如src目录,删除无用目录如下
完善chat-boot-dependencies下pom.xml依赖, 常用依赖放入,作为依赖主体,以下是本狗常用依赖,可酌情选择;记得把packaging改为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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>chat-boot</artifactId>
<groupId>net.javadog.chat</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>chat-dependencies</artifactId>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<mysql-connector-java.version>8.0.17</mysql-connector-java.version>
<druid.version>1.1.21</druid.version>
<mybatis-plus.version>3.4.1</mybatis-plus.version>
<fastjson.version>1.2.75</fastjson.version>
<hutool.version>5.5.8</hutool.version>
<lombok.versin>1.18.12</lombok.versin>
<easypoi.version>4.2.0</easypoi.version>
<springfox-swagger2.version>2.9.2</springfox-swagger2.version>
<springfox-swagger-ui.version>2.9.2</springfox-swagger-ui.version>
<knife4j.version>2.0.4</knife4j.version>
<weixin.version>4.4.5.B</weixin.version>
<shiro.version>1.3.2</shiro.version>
<jwt.version>3.2.0</jwt.version>
</properties>
<dependencyManagement>
<dependencies>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 数据库驱动,可根据自己需要自行删减,默认使用mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.versin}</version>
</dependency>
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox-swagger2.version}</version>
</dependency>
<!--swagger-ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</