让 Spring Framework7.0.7 支持 velocity
要让 Spring 7.x(基于Jakarta EE)支持 Velocity,核心方案是将官方提供的 velocity-tools-view 从普通版替换为 jakarta 版,以解决Servlet API包名变更导致的兼容性问题。
核心解决方案
其实操作步骤非常简单,关键在于替换一个JAR包:
-
保留原有的
velocity-engine-core和velocity-tools-generic,这两个核心包不需要改动。 -
替换
velocity-tools-view,将标准的velocity-tools-view-3.1.jar换为velocity-tools-view-3.1-jakarta.jar。
这个 jakarta 版本是专门为了适配新规范而构建的,它内部引用的 Servlet 接口是 jakarta.servlet 包,能完美兼容 Spring 7.x。
详细操作步骤
为了确保配置无误,你可以参考以下步骤和配置:
-
Maven依赖配置:
在你的pom.xml中,需要显式地排除对旧javax.servlet的传递依赖,并引入jakarta版的核心视图工具包。<!-- Velocity 核心引擎 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.4.1</version> </dependency> <!-- Velocity Tools 通用模块 --> <dependency> <groupId>org.apache.velocity.tools</groupId> <artifactId>velocity-tools-generic</artifactId> <version>3.1</version> </dependency> <!-- Velocity Tools 视图模块 (Jakarta版) --> <dependency> <groupId>org.apache.velocity.tools</groupId> <artifactId>velocity-tools-view</artifactId> <version>3.1</version> <classifier>jakarta</classifier> <!-- 重点:通过classifier指定jakarta版本 --> </dependency> -
Spring配置检查:
由于 Spring 7.x 对视图解析器的内部实现做了调整,你需要手动配置VelocityViewResolver或VelocityLayoutViewResolver。请确保在配置视图解析器时,让它使用正确的VelocityView或VelocityLayoutView类,这些类在jakarta版的 JAR 包中已得到适配。
velocity-engine-core-2.4.1.jar,velocity-tools-generic-3.1.jar文件不用动只用升级一下 velocity-tools-view-3.1.jar 为 velocity-tools-view-3.1-jakarta.jar 即可

浙公网安备 33010602011771号