模块化开发
简而言之就是将一个单体应用拆分为多个模块,形成父-子项目,方便协同开发,此方法于微服务架构略有不同,微服务中也是父-子项目,但它的每个子项目都是一个独立可运行的项目。而此处每个子项目均无法独立运行。
创建
创建一个父项目,然后在父项目下创建模块即子项目,根据不同职责来进行划分:
父、子项目均有自己的pom,子pom将继承父pom。
由于子项目直接独立,但又不得不存在依赖关系,比如web(controller层)需要调用service模块、service模块依赖service-impl模块…
模块也是独立子项目,我们可以通过maven来构建模块的坐标,再通过maven配置来引入坐标。
依赖处理
1.构建模块maven坐标:
<?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>sp</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <!--本项目的坐标信息--> <artifactId>beans</artifactId> <groupId>org.example</groupId> <version>1.0</version> </project>
此时通过install就可以将此模块打包为一个坐标到本地仓库了,其他模块可以根据坐标信息来进行引入。
2.引入模块坐标:
<dependencies> <dependency> <!--<groupId>org.example</groupId>--> <!--由于父项目已经配置此项,因此子模块无需配置--> <artifactId>beans</artifactId> <version>1.0</version> </dependency> </dependencies>
引入坐标之后就能直接调用坐标的内容了。
配置管理
项目拆分为多个模块后,application.properties也将被分成多,至于配置的管理可以参考我的另一篇博客:https://blog.csdn.net/qq_52681418/article/details/114300530 ,里面的maven管理springboot配置章节将介绍如何管理配置文件。
项目打包
第一次时直接将父项目install一下,之后每次修改模块对模块单独install即可。
多环境时切换环境需要重新install父项目,建议在打包时clean一下之前的打包数据,否则有可能还存在旧的打包文件导致项目无法启动。