Spring/React Web应用页面无法加载且报StackOverflowError错误如何解决
故障排查结果
根因
故障的直接触发原因是HomeController中存在无限转发死循环:
- 你给根路径
/绑定的GET接口返回值为forward:/,意为将请求转发到根路径/本身 - 每次转发都会重新命中该接口,递归调用无退出条件,最终触发
StackOverflowError栈溢出,对应前端返回的500错误。
此前项目运行正常大概率是因为:之前该Controller的逻辑不同、或者静态资源优先级高于Controller映射没有命中该接口、或者该Controller代码未被实际加载生效。
解决方案
根据你的业务场景二选一即可:
场景1:根路径需要返回React前端首页
这也是Spring+React全栈项目的常规用法,按如下修改即可:
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping(value = {"/"}) public String getHomePage() { // 直接返回静态首页路径,SpringBoot会自动读取resources/static下的index.html return "index.html"; } }
如果你的React打包产物已经正确放在resources/static目录下,也可以直接删除整个HomeController,SpringBoot默认会将根路径请求指向静态目录下的index.html。
场景2:根路径需要转发到其他后端接口
将转发路径改为你实际的目标接口路径,不要指向根路径本身即可,例如:
// 示例:转发到/api/list接口 return "forward:/api/list";
内容的提问来源于stack exchange,提问作者davon belvin
相关产品推荐
相关产品推荐

