You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在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

火山引擎 最新活动