如何让spring5.x支持velocity

Posted 石工记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让spring5.x支持velocity相关的知识,希望对你有一定的参考价值。

新版spring5.0已经移除了对velocity的支持,下面就说说如何让spring5.x支持velocity。


spring从4.3开始不再支持velocity,官方说法是:Velocity 1.7 dates back to 2010. After more than five years of no

maintenance in the original project, it's about time to deprecate Velocity support on Spring's side.

来自:https://jira.spring.io/browse/SPR-13235

解决步骤:

一、jdk版本:jdk1.8
二、spring版本:5.0.0.RELEASE
三、pom依赖:

<jackson.version>2.9.0</jackson.version>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>$jackson.version</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>$jackson.version</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>$jackson.version</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>
 

以上是jackson的版本,不是主要因素。

下面是velocity依赖:
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-tools</artifactId>
    <version>2.0</version>
    <exclusions>
        <exclusion>
            <artifactId>struts-core</artifactId>
            <groupId>org.apache.struts</groupId>
        </exclusion>
        <exclusion>
            <artifactId>struts-taglib</artifactId>
            <groupId>org.apache.struts</groupId>
        </exclusion>
        <exclusion>
            <artifactId>struts-tiles</artifactId>
            <groupId>org.apache.struts</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>velocity-tools</groupId>
    <artifactId>velocity-tools-view</artifactId>
    <version>1.4</version>
</dependency>
四、补充spring、velocity源代码到工程里

spring代码来自spring-framework-4.2.8.RELEASE,velocity代码来自velocity-tools-view 1.4。补上之后的代码结构如下:

其中,把velocity-tools-view中的两个类单独拿出来是为了覆盖velocity-tools中的deprecated同名类。这两个类位置如下:

 

这样,spring5.0就重新支持velocity了。其实,从上面可以看到,我们所做的就是把spring删掉的velocity那部分代码又给添加上了而已。

以上是关于如何让spring5.x支持velocity的主要内容,如果未能解决你的问题,请参考以下文章

velocity 是如何实现introspector 自醒来屏蔽反射的

程序猿常用在线小工具总结

Velocity

velocity自定义标签和指令

在 Velocity 或 FreeMarker 中更好地支持国际化?

Spring5.X常见的注入方式