項目原先使用的springboot版本号為1.5.1,使用的模闆引擎為velocity。
而目前springboot最新版已經到了2.1.7了,況且springboot已經停止對1.x版本的支援,是以決定将springboot版本更新到2.1.7。
更新過程中踩到特别多的坑,花了太多的時間查找大量的資料才解決,過段時間會寫一個springboot版本更新所有我遇到的坑的解決方案,友善以後少走彎路。
springboot1.5以後就已經停止對velocity的支援了,不僅是springboot。spring5也不再支援velocity了。是以如果還有想用velocity的同學,看到這裡,建議趁早放棄velocity,改用其他模闆引擎,比如freemarker。
其實我更新完以後啟動項目是不報錯的,隻不過背景傳回查找velocity模闆的時候就找不到了,所有請求均為404。主要原因在于,所有有關velocity配置以及渲染的類都來源于
spring-context-support.jar
以及
spring-webmvc.jar
這兩個包中。而在這兩個包最新的版本中,所有有關velocity的類全都删除了。
ps:感覺并沒有做向下相容,至少加一個@Deprecated也是好的。
既然明白了原因,那麼解決方式也就很明了了,隻要将這些已經删除的類再找回來就可以了。我這裡使用的版本是
spring-context-support-4.3.6.RELEASE.jar
和
spring-webmvc-4.3.6.RELEASE.jar
。所需要的類如下:
需要注意的是在
org.springframework.web.servlet.view.velocity.VelocityConfigurer
中有一行代碼
private static final String SPRING_MACRO_LIBRARY = "/velocity/spring.vm";
這個
SPRING_MACRO_LIBRARY
屬性需要改為自己spring.vm存放的位置。
總結
有些人使用的可能是
spring-boot-starter-velocity.jar
這個包來內建的velocity,我的項目中是用了
VelocityAutoConfiguration.java
的裝配器,是以不确定是否适合所有人。當然具體問題具體分析,我相信一定都會有解決方案。
ps:如果需要這些類的人不想再去花功夫尋找,可以留下郵箱,我将這些類打包發給有需要的人。