You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何分离REST API与Web应用?

单项目多模块 vs 独立双项目:你的Spring Boot场景最优解

一、优先选单项目多模块(适配你的当前需求)

你的场景下,多模块方案是更高效的选择,理由和优化建议如下:

  • 核心优势:共享core层代码,避免重复编写实体类、Repository、数据库配置;Maven多模块能统一管理依赖版本,调试时在IntelliJ里就能切换模块,打包部署也更便捷。
  • 优化你的现有模块结构:
    • core模块:作为纯Java库(<packaging>jar</packaging>,无需Spring Boot启动类),存放所有共享资源:H2数据库配置、实体类(@Entity)、Repository接口、通用工具/校验方法。
    • api模块:依赖core模块,仅包含RESTful控制器(@RestController),专注返回JSON数据。配置独立的Spring Boot启动类,指定专属端口(如8081),仅引入Spring Web、Spring Data JPA等必要依赖。
    • web模块:依赖core模块,仅包含Thymeleaf相关控制器(@Controller),专注返回页面视图。配置独立的Spring Boot启动类,指定端口(如8080),引入Spring Web、Thymeleaf、Spring Data JPA依赖。
  • 注意事项:两个启动类需配置不同的server.port,避免端口冲突;父pom通过<dependencyManagement>统一锁定Spring Boot及各依赖版本,子模块无需重复声明版本号。

二、独立双项目的适用场景

只有当未来API与Web应用的业务逻辑完全拆分、需要独立扩容部署,或者分属不同团队维护时,才考虑拆成两个独立项目。当前阶段拆分反而会增加冗余:需要重复编写core层代码、配置两份数据库连接,调试时要启动两个项目,效率更低。

对你现有结构的调整建议

你当前的service模块命名易混淆,建议更名为api模块,明确其REST服务的定位;core和web模块保持职责不变即可。调整后模块职责清晰,后续维护和扩展更顺畅。

内容的提问来源于stack exchange,提问作者lecanardcolvert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:35:37