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

Spring Boot Session作用域Bean示例运行返回404错误如何解决?

排查解决步骤

  • Bean名称注入不匹配
    HelloMessageBean中定义Session Bean的方法名为requestScopedBean,Spring默认以方法名作为Bean的注册名称,但Controller中@Resource(name = "sessionScopedBean")指定注入的Bean名称为sessionScopedBean,两者不一致会导致启动时Bean注入失败,连带Controller无法正常注册。
    解决方法:要么修改@Bean的方法名为sessionScopedBean,要么给@Bean注解指定名称@Bean("sessionScopedBean"),要么修改@Resource的name属性为requestScopedBean。

  • Controller未被Spring扫描到
    如果启动类的位置没有覆盖到Controller、Configuration类所在的包,Spring不会加载对应类,自然不会注册/scopes/session的请求映射。
    解决方法:确认启动类放在所有业务代码的顶层父包,或者在启动类上添加@ComponentScan(basePackages = "你的业务代码所在包名")指定扫描范围,启动时查看控制台是否打印类似Mapped "{[/scopes/session]}"的日志,有输出说明映射注册成功。

  • Thymeleaf模板路径或依赖错误
    接口返回的视图名为scopesExample,Spring Boot默认会去resources/templates目录下查找对应html文件,如果文件放错位置(比如放在static目录、resources根目录),或者项目没有引入Thymeleaf的starter依赖,都会导致视图解析失败返回404。
    解决方法:确认scopesExample.html存放在resources/templates目录下,同时检查pom.xml或build.gradle中是否引入了spring-boot-starter-thymeleaf依赖。

  • 存在自定义上下文路径
    如果项目配置文件中设置了server.servlet.context-path属性(比如值为/demo),那么正确的访问地址应为http://localhost:8080/demo/scopes/session,直接访问不带上下文路径的地址会返回404。

  • 额外优化点:HelloMessageGenerator的无参构造存在逻辑问题,this.message = message赋值的右值是未初始化的成员变量,最终message值为null,不会触发404但会导致首次访问的previousMessage显示为空,可以删除无用的无参构造,或者给message设置默认初始值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:48:02