学习spring boot 的多模块开发形式。
1.项目结构搭建;
- 选择 spring init 创建第一个项目作为根项目(父项目),为了方便选择maven模式初始化该项目。包名应保持后续统一,所以不要乱取。
- 根项目构建好后,删除 @.mvn @src 文件夹,根目录下的其余文件可只保留.iml后缀文件与pom文件。
- (Web模块)右键根项目,新增module。同样选用spring init进行该模块的构建,该模块将作为启动类所在的主模块,包名与根项目统一。文件保留形式参考第一步。
- (Service模块)继续右键根项目,新增module。本次选用Maven 进行模块构建,因为maven会自动选择根项目作为当前模块的父模块。
- (Dao模块)右键新增。同第四步。
- 补充说明,模块数量与名称仅供参考,如上述三模块式结构很简单且后续易操作,根据个人情况可适当修改。
2.项目基础环境配置;
- 首先修改父项目的pom文件,完整移除plugin标签及内容,因为spring boot maven plugin在启动类所处的模块中才会用到,父模块不删除这部分的话 会报错。参考以下代码
<modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <modules> <module>bg-service</module> <module>bg-dao</module> <module>bg-web</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.graduation.design</groupId> <artifactId>bs-bg</artifactId> <version>0.0.1-SNAPSHOT</version> <name>bs-bg</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencyManagement> <dependencies> </dependencies> </dependencyManagement> 说明: ============================================================================== <packaging>pom</packaging> 多模块结构的标识。 <modules> 项目模块整合。 <dependencyManagement> 管理子模块依赖。统一在父项目的此标签内引入会用到的依赖,之后在对应的子模块pom文件中再次引入要使用的依赖,才算真正将依赖引入到子模块中!!!==============================================================================
2.修改子模块的pom文件,参考以下代码
<parent> <artifactId>bs-bg</artifactId> <groupId>com.graduation.design</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>bg-service</artifactId> <dependencies> <dependency> </dependency> </dependencies>
3.处理模块间的依赖。父项目自然不用依赖子模块内的东西。子模块间的依赖遵循功能实现的流程。如本文章中的三个子模块(web、service、dao)。三者间的联系为 dao -> service ->web。实现参考以下代码。
service模块加入dao模块依赖 <dependency> <groupId>com.graduation.design</groupId> <artifactId>bg-dao</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
4.完成后刷新maven!
3. 项目模块介绍;
- web 主启动类所在的模块,controller、config、filter等文件也都在此模块内。
- service 接口及业务逻辑处理在该模块内实现。
- dao 与数据库交互的模块,mapper、entity等在此模块内。