解决 Java 17 , Springboot 3.0, Shiro 框架无法使用的问题。
本文解决了在 Java 17 环境下,Spring Boot 3.0 与 Shiro 框架因 Servlet 兼容性问题而无法正常使用的问题。问题的根源在于 Spring Boot 3.0 引入了 Servlet 5.0,因此将原本的 `javax.servlet` 替换为 `jakarta.servlet`,导致传统基于 `javax.servlet` 的 Shiro 版本失效,即便尝试强制引入 `javax.servlet` 也无效。
为了应对这一兼容性挑战,Shiro 发布了兼容 `jakarta` 的新版全家桶。开发者只需在项目中替换相关依赖即可。对于 Gradle 用户,可直接引入 `shiro-spring` 和 `shiro-web` 的 `jakarta` 版本,并正确排除旧模块;而 Maven 用户需导入带有 `jakarta` 标识的相关依赖模块。项目中其余基于 Shiro 的实现代码无需改动,可以平稳完成升级。
这种解决方法提供了当下对 Shiro 框架问题的最优解,也为开发者解决类似的问题提供了参考。详细配置与实践可参考 Shiro 官方文档及相关示例代码。