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

Spring多模块项目:前端端口可访问后端API问题排查与解决

问题排查与解决方案

核心原因

你给frontend-module添加了backend-module的依赖,Spring Boot启动时会自动将后端模块中的@RestController、@Controller等Bean加载到前端模块的Spring容器中,相当于前端模块启动时也注册了后端的API接口,所以通过3008端口能访问到原本属于8008端口的接口。

排查步骤

  • 检查frontend-module的pom.xml(Maven)或build.gradle(Gradle),确认是否直接/间接引入了backend-module的依赖
  • 启动前端模块后,查看控制台日志,是否存在类似Mapping GET "/api/get"的接口注册日志,若有则说明后端Controller被加载到了前端容器中
  • 可调试前端模块的Spring上下文,验证其中是否包含后端Controller的实例

解决办法

1. 移除不必要的模块依赖

如果前端仅需通过HTTP请求调用后端API,无需模块级的依赖,直接删除pom/gradle文件中对backend-module的依赖即可。前端与后端完全通过HTTP交互,不需要模块耦合。

2. 用Spring Profiles隔离Bean加载

若必须保留依赖(比如共享DTO类),可通过Profiles控制后端Controller的加载:

  • 给backend-module中所有Controller类添加@Profile("backend")注解
  • 在后端模块的配置文件(application.yml/application.properties)中添加spring.profiles.active=backend,激活该Profile
  • 前端模块的配置文件不激活backend Profile,这样前端启动时就不会加载后端的Controller Bean

3. 拆分后端模块(规范方案)

将backend-module拆分为两个子模块:

  • backend-api:仅存放公共DTO、接口定义等无执行逻辑的代码
  • backend-core:存放Controller、业务逻辑等实际处理请求的代码
    让frontend-module仅依赖backend-api,不依赖backend-core,避免后端Controller被加载到前端容器中

验证方法

修改后单独启动frontend-module,访问localhost:3008/api/get应返回404状态码;启动backend-module后,访问localhost:8008/api/get能正常返回结果,即说明隔离成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:59:56