IDEA 搭建springboot多模块项目

首先说一下为什么要建多模块项目,其实很多项目在刚开始的时候,都是单结构应用,常见的几个分层(web层、service层、dao层)直接通过建不同的包名即可,但是随着业务发展,项目参与人员变多,业务变复杂,所有的代码都在一个结构下,就会变得不直观,同时耦合度可能比较高。另外一个问题就是,在多服务的场景下,要给外部服务提供接口了(比如要提供对外的dubbo接口),如果是单体结构,只能整个模块打个jar出去,不优雅,不然还得重新做多模块拆分,麻烦。还有一个问题,可能一些通用的类在好几个工程里都有,多模块结构可以把通用的类放到一起,打包出去给其它服务用。所以,对于可预见未来的中大型项目,最好是刚开始就直接多模块搭建,对于小型项目,单结构即可。

下面简单举个例子,在idea里建一个多模块的项目:

首先说一下例子的结构:

app-info
    └ app-info-commom
    └ app-info-model
    └ app-info-dao
    └ app-info-service
    └ app-info-web

各module依赖关系:

app-info-commom
        ↓
app-info-model
        ↓
app-info-dao
        ↓
app-info-service
        ↓
app-info-web

新建项目,packaging选择jar

下一步,这里不选任何依赖,因为这是最外层的父 module

建好的工程,只保留画红线的部分,其它的文件删掉

 

 

 这一步开始新建子module,首先建最底层的app-info-commom,选择maven即可

 groupId、artifactId填一下

app-info-commom下的pom.xml里<parent>应该是父module的信息

 ↑↑↑↑↑↑  app-info-model参考app-info-commom操作   ↑↑↑↑↑↑

下面新建app-info-dao,因为这里要导入mysql、mybatis相关的包,所以选择spring initializr

### 如何在 IntelliJ IDEA创建 Spring Boot 多模块项目 #### 使用 IntelliJ IDEA 创建多模块项目的初始设置 打开 IntelliJ IDEA 后,选择 `File` -> `New` -> `Project...` 来启动新的工程向导[^1]。 对于多模块 Maven 或 Gradle 项目,在创建项目时应指定其打包方式为 `pom` (Maven)或者不指定类型(Gradle),并确保选择了 `Create from template` 下的 `Spring Initializr` 模板来配置根项目的依赖关系和基本信息[^2]。 #### 配置父级 POM 文件 (针对 Maven) 当使用 Maven 构建工具时,编辑父项目的 pom.xml 文件以定义子模块结构: ```xml <modules> <module>child-module-name</module> </modules> ``` 此部分告知构建系统哪些目录下的文件夹作为子模块参与整个项目的编译过程。同时还需要调整 `<packaging>` 标签的内容为 `pom`,表明这是一个聚合型的父POM而不是普通的jar/war包形式的应用程序[^3]。 #### 添加子模块到现有项目中 为了增加额外的服务层或其他功能组件,可以通过右键点击主项目名称->`New`->`Module...`的方式引入更多独立运行但仍属于同一整体解决方案内的单元。每个新增加出来的子模块都可以单独拥有自己的技术栈以及业务逻辑实现细节。 #### 设置共享资源和服务发现机制 考虑到微服务架构下各节点间通信的需求,建议利用 Eureka, Zuul/Zuul Gateway 等 Netflix OSS 组件搭建注册中心与API网关;也可以考虑采用 Consul 或者 Nacos 实现相同目的。这些中间件能够帮助简化跨多个实例部署环境中的地址解析难题,并提供负载均衡等功能特性。 #### 测试与调试多模块应用 完成上述操作后即可按照常规流程编写测试案例验证各个组成部分的功能正确性。值得注意的是,在某些情况下可能需要特别处理不同进程间的交互问题,比如通过命令行参数传递端口号等信息给每一个正在监听特定网络位置上的服务器实例。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值