ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SpringBoot3集成Shiro踩坑全记录:版本兼容与过滤器配置

2026/9/10 8:13:13 拓冰建站 浏览量
SpringBoot3集成Shiro踩坑全记录:版本兼容与过滤器配置 如果你最近在 SpringBoot3 项目里集成 Shiro打开搜索引擎大概率会看到两种结果一种是基于 SpringBoot2 的老教程配置类里全是 javax.servlet代码一粘直接编译失败另一种是只贴了依赖和几个零散片段跑起来才发现过滤链根本不生效。这篇文章不重复那些基础流程而是把我从 SpringBoot3 刚发布那会儿一路踩到生产环境的完整过程拆开重点讲三件事版本兼容的硬门槛、给 Shiro 加自定义过滤器时容易陷入的误区以及配置密钥时那个让人抓狂的“找不到构造链”到底是怎么来的。1. SpringBoot3 集成 Shiro先搞懂版本升级动了哪些“地基”很多人以为从 SpringBoot2 升到 SpringBoot3 只是换个版本号实际上它同时改了 J2EE 的底层命名空间、自动配置的注册机制和默认的 JDK 基线。这三件事里任何一件没踩对Shiro 集成都会出大问题。1.1 javax 到 jakarta为什么不升级版本就跑不起来SpringBoot3 最直观的变化是 Java EE 升级为 Jakarta EE整个 Servlet API 的包名从javax.servlet变成了jakarta.servlet。Shiro 本身是建立在 Servlet API 之上的权限框架它内部的 Filter 实现、WebUtils 工具类全部依赖 Servlet 规范里的Filter、HttpServletRequest这些接口。如果你引用的 Shiro 还是 1.11 或更早启动时第一个异常大概率是NoClassDefFoundError: javax/servlet/Filter。这个异常非常典型千万别往业务代码上找原因直接升级 Shiro 版本即可。Shiro 从 1.13.0 开始把 Jakarta 命名空间的支持带入主线这也是 SpringBoot3 集成 Shiro 的最低版本门槛。1.2 自动配置机制SpringBoot3 不再读取 spring.factories第二个容易忽略的变化是自动配置的注册方式。SpringBoot2 时代三方库只要在 jar 包的META-INF/spring.factories里声明自动配置类SpringBoot 启动时就能扫描到并加载。SpringBoot3 改成了读取META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件旧的spring.factories虽然还兼容但自动配置这块基本不看了。旧版 Shiro starter 只打了spring.factories所以在 SpringBoot3 下即使