JDK6升级JDK8踩雷
簡介
此次升級借助于公司項目,現公司項目為JDK6,出于種種原因的考慮,需要將現有版本升級為JDK8。整個項目的環境非常的亂,沒有用maven做jar管理,所以升級過程中也遇到了一些小麻煩,編碼更是慘不忍睹,雖然步步艱辛,但是我也都一一克服了。
之前項目開發過程中不太關注JDK版本與版本之間的差異,以及JDK版本和spring之間的異同,通過這次升級也能夠了解一些其中的關系。比如spring4以上的版本才能夠兼容JDK8的、還有FtpClient到JDK7開始就已經被重寫了等等問題
博客的記錄過程會直接復刻解決問題的過程,一方面便于記錄,另一方面便于讀者理解。
升級參數
- IntelliJ IDEA 2017.1.5
原項目配置
- JDK6
- Tomcat 6
- Spring 3.2.8
- Mybatis 3.2.6
現項目配置
- JDK8
- Tomcat8
- Spring 4.2.5
- Mybatis 3.2.6
- jackson-core 2.8.4
- quartz 2.2.2
踩雷過程
1、FtpClient 報錯
此功能主要用于將文件上傳至FTP文件服務器操作,原本JDK6版本 FtpClient 需要new實現,但是至JDK7之后重寫了相關方法,所以想要從JDK6升級到JDK8首先得重寫FTP文件上傳相關功能。 具體實現可以Google,或者使用我有提供好。
FtpUtil.java
2、spring4.x 支持 JDK8
原本項目spring是基于3.x的,但是spring對于JDK8的支持只有4.x才開始。所以為了能夠成功升級JDK8,必須要先更換之前spring相關的jar。
替換jar之后還需要將所有xml配置文件中基于3.x的引用全部替換成4.x。
3、配置json解析
spring4.x下對于Jackson的配置發生了些許變化,原先的配置org.springframework.http.converter.json.MappingJacksonHttpMessageConverter現已替換為org.springframework.http.converter.json.MappingJackson2HttpMessageConverter,所以參考以下配置即可完成從spring3.x到spring4.x的轉化。
配置Jackson的同時,也需要升級Jackson相關的jarjackson-annotations、jackson-databind、jackson-core
4、重寫Quartz在spring4.x下的配置
Quartz和spring的整合,在spring4.x中有兩點區別。
spring4.x開始使用ref,由local變為bean屬性
<ref local="imageDeleteTrigger"/> 變為 <ref bean="closeOrderTrigger"/>org.springframework.scheduling.quartz.CronTriggerBean類在spring4.x中被棄用,現變更為org.springframework.scheduling.quartz.CronTriggerFactoryBean類
具體重寫可以參考 Quartz - Spring4.x 環境下的使用
5、Spring Security 4.x 默認開啟CSRF保護功能
CSRF保護功能在Spring Security 3.x中是默認關閉的,所有3.x中并不需要過多關注,如果有必要用到防御,需要開啟后再加入部分配置。
開啟CSRF保護之后如何使用可以參數Spring Boot與Spring Security整合后post數據不了,403拒絕訪問
參考資料
Quartz - Spring 環境下的使用
Spring 3.x 升級到Spring 4.x 注意事項和步驟,錯誤解決方法
Spring3 升級Spring 4
總結
以上是生活随笔為你收集整理的JDK6升级JDK8踩雷的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Real-Time Rendering—
- 下一篇: raw socket 编程实例