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

Spring Boot从2.5.7升级至2.6.1启动报错No ServletContext set求助

问题根因

这个报错是Spring Boot 2.6版本迭代中两处核心改动共同导致的:

  1. Spring Boot 2.6.0开始默认禁用了循环依赖,同时收紧了Servlet上下文相关Bean的初始化顺序校验,WebMvc相关组件的初始化对ServletContext的就绪状态要求更严格
  2. 配套的Spring Security 5.6.x版本调整了@EnableWebSecurity注解的配置加载逻辑,当Security配置类不符合加载规范时,会打乱Web相关Bean的初始化顺序,导致resourceHandlerMapping初始化时ServletContext还未完成注入
可直接落地的解决方案
  • 检查所有标注@EnableWebSecurity的配置类,确保类上同时添加了@Configuration注解,不要遗漏。若当前项目还在使用已废弃的WebSecurityConfigurerAdapter继承方式编写Security配置,优先替换为组件式的SecurityFilterChain配置,适配2.6.x版本的加载逻辑。
  • 不要把自定义WebMvc配置(实现WebMvcConfigurer接口的配置逻辑)和@EnableWebSecurity标注的Security配置写在同一个类中,拆分到两个独立的配置类里避免加载顺序冲突。
  • 若项目确实存在循环依赖场景,在application配置文件中添加配置spring.main.allow-circular-references=true,手动开启循环依赖支持,避免Bean初始化顺序被打乱。
  • 检查依赖树,确认所有Spring Web、Spring Security相关依赖的版本都和Spring Boot 2.6.1的依赖管理版本对齐,没有引入低版本的兼容冲突依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:54:02