简介

此次升级借助于公司项目,现公司项目为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-annotationsjackson-databindjackson-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踩雷相关推荐

  1. 升级JDK8的坎坷之路

    为更好的适应JAVA技术的发展,使用更先进及前沿的技术.所以推出将我们现在使用的JDK1.6(1.7)及tomcat6(7)升级至JDK1.8及tomcat8,使我们的系统获得更好的性能,更好适应未来 ...

  2. 升级JDK8的坑--base64

    概述 Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,"+"和"/"这64个字符来编码原始字符(还有垫字符"=").一个字符 ...

  3. 2018年 每日分享一个技术贴

    一月份 推荐五个非常实用的软件---(编辑器和日常)                                                                 2016-02-0 ...

  4. java 8和jdk区别_java-8 – JDK 6和JDK8之间的Java Collection差异

    您没有理由期望JDK6或JDK8中的[BLA,TEST]输出,因为Javadoc不会向您承诺将根据插入顺序(或任何顺序)打印HashSet的元素.允许不同的实现产生不同的顺序. 如果要确保两个JDK中 ...

  5. 重塑云上的 Java 语言

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 Photo @  Toa Heftiba 文 |郁磊 音乐无国界, ...

  6. 拼不过 GO?阿里如何重塑云上的 Java

    阿里妹导读:Java 诞生于20年前,拥有大量优秀的企业级框架,践行 OOP 理念,更多体现的是严谨以及在长时间运行条件下的稳定性和高性能.反观如今,在要求快速迭代交付的云场景下,语言的简单性似乎成了 ...

  7. 2021年2月社招面经分享_Java资深/高级开发

    2021-3-18 V1.0:是10家左右一线和二线互联网企业的面试题集合.这次只是把题目挂上来,有些捎带了不完善的答复,答案仅供参考,既不完善也不权威哈.后面我再逐个完善答案上来. 2021-4-2 ...

  8. java面向对象编程基础

    java面向对象编程基础 前言:什么是java 是咖啡飘香的清晨 - 是斯坦福校园意浓情深 - 是James的思想睿智 是剁手党双十一挥舞的利刃 是大数据云计算驰骋的平台 - 是ATM上吐出的钞票 - ...

  9. mac 多个java 版本下载_MacOS 下安装多个版本的 JDK 并统一管理

    现在的 MacOS 都不自带 JDK 了,如果你在未安装 JDK 的 MacOS 中执行 Java 命令会出现如下提示: AigeStudio@aige$ java -versionNoJava ru ...

  10. macOSLinux设置JDK版本

    MacOS 下安装多个版本的 JDK 并统一管理 现在的 MacOS 都不自带 JDK 了,如果你在未安装 JDK 的 MacOS 中执行 Java 命令会出现如下提示: AigeStudio@aig ...

最新文章

  1. vue.js 初体验— Chrome 插件开发实录
  2. 单件模式Singleton Pattern
  3. STM32 进阶教程 4 - 软件实现高精度延时 2
  4. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)
  5. Linux如何将文件中内容放到粘贴板上
  6. python print格式化输出类型_第一讲:Python print() 格式化输出
  7. python seaborn boxplot_seaborn.boxplot
  8. 脚本制作Minilinux
  9. C++/Qt文件写入读取速度比较
  10. [转万一] 不使用标题栏拖动窗体
  11. 从0教你用Python写网络爬虫,内容详细代码清晰,适合入门学习
  12. 性能优化大牛 Brendan Gregg 的新书要来了
  13. ydui滚动加载:TypeError: Cannot read property '$emit' of undefined
  14. 基于Ziegler-Nichols法的PID参数整定
  15. ip地址冲突该如何解决?
  16. 悉尼大学计算机录取要求,悉尼大学录取要求
  17. python 如何调试uc浏览器_UC浏览器开发者工具
  18. C++ 模板的显示具体化
  19. Android系统字体加载流程
  20. python怎么编写流氓软件_Python恶意软件分析入门

热门文章

  1. 基于java的房地产客户管理系统
  2. 房地产项目动态计划管理系统
  3. 社交媒体坏了 — 来自社会化媒体峰会报告
  4. f分布表完整图a=0.01_第7章 分布分析
  5. linux设计论文题目,计算机linux本科毕业论文题目
  6. 计算机毕业设计论文题目分享
  7. 天勤数据结构代码——递归
  8. VGG16和VGG19网络结构图
  9. matlab均值滤波代码6,均值滤波matlab程序代码
  10. js读取本地excel到html,JS读取本地EXCEL文件