如何在Spring Boot 2.0.6中引入spring-boot-starter-velocity依赖
解决Spring Boot 2.0.6.RELEASE中Velocity依赖与配置问题
我太懂这种升级卡壳的感受了——Spring Boot 2.x确实直接砍掉了spring-boot-starter-velocity官方启动器,老项目升级时很容易在这里碰壁。别慌,咱们手动补全配置就能搞定,下面是我在多个项目里验证过的可行方案:
1. 替换依赖
先把原来的starter依赖换成Velocity核心库的直接依赖,如果你的项目用到了Velocity工具类(比如日期、数字格式化工具),也得把工具包加上。在pom.xml里替换成以下内容:
<!-- Velocity核心依赖,和Spring Boot 2.0.6兼容性拉满 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7.3</version> </dependency> <!-- 可选:如果用到Velocity工具类则添加 --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency>
2. 手动配置Velocity视图解析器
Spring Boot不再提供自动配置,咱们自己写个配置类注册VelocityViewResolver,让Spring能识别Velocity模板:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.view.velocity.VelocityViewResolver; @Configuration public class VelocityConfig { @Bean public VelocityViewResolver velocityViewResolver() { VelocityViewResolver resolver = new VelocityViewResolver(); // 模板文件前缀,根据你的项目结构调整,比如resources/templates就用classpath:/templates/ resolver.setPrefix("/WEB-INF/templates/"); // 模板文件后缀 resolver.setSuffix(".vm"); // 设置响应编码,避免乱码 resolver.setContentType("text/html;charset=UTF-8"); // 可选:指定工具类配置文件路径 resolver.setToolboxConfigLocation("/WEB-INF/velocity-toolbox.xml"); // 开发环境关闭缓存,方便调试;生产环境可以改成true resolver.setCache(false); return resolver; } }
3. 工具类配置(可选)
如果用到了Velocity的工具类,需要创建velocity-toolbox.xml放在配置指定的路径(比如上面的/WEB-INF/下),示例内容:
<?xml version="1.0" encoding="UTF-8"?> <toolbox> <tool> <key>date</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.DateTool</class> </tool> <tool> <key>number</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.NumberTool</class> </tool> </toolbox>
4. 快速验证
写个简单的Controller和模板测试配置是否生效:
import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class TestVelocityController { @GetMapping("/velocity-test") public String test(Model model) { model.addAttribute("greeting", "Spring Boot 2.x + Velocity 配置成功!"); return "test"; // 对应templates/test.vm模板 } }
在模板目录下创建test.vm:
<!DOCTYPE html> <html> <head> <title>Velocity Test</title> </head> <body> <h1>$greeting</h1> </body> </html>
启动项目访问/velocity-test,能正常显示内容就说明配置没问题了。
这个方案适配Spring Boot 2.0.6.RELEASE完全没问题,你可以放心试。
内容的提问来源于stack exchange,提问作者Akhil K




