由于现在springboot的主流版本都已经是2.x的了,因此自己也打算将项目中使用的springboot1.5.10升级到2.2.4这个版本。

自己也能够预料得到,在升级过程中肯定会遇到各种各样的问题,自己也做好了准备去面对这些问题。

问题一:JedisPoolConfig这个类找不到

这个类所在的包为 redis.clients.jedis.JedisPoolConfig;由于springboot版本的切换,redis的版本也跟着进行了切换,本人使用的这个版本中不包含这个类,

因此报错。

解决办法:使用搜索引擎查找问题的原因,在下面这两篇博文中找到了解决办法。

按照这篇博文找到一个解决方案

https://blog.csdn.net/wangxinyao1997/article/details/88956674

https://stackoverflow.com/questions/22704518/jedispoolconfig-is-not-assignable-to-genericobjectpoolconfig

解决方式为添加一个redis.clients

的依赖,

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.4.2</version>

</dependency>

重新启动,项目报错,错误信息为:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JedisConnectionFactory' defined in class path resource [applets/common/config/RedisConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.jedis.JedisConnectionFactory]: Factory method 'JedisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder

at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656)

at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)

at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)

at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885)

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789)

... 32 common frames omitted

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.connection.jedis.JedisConnectionFactory]: Factory method 'JedisConnectionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)

at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651)

... 46 common frames omitted

Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/util/SafeEncoder

at org.springframework.data.redis.connection.jedis.JedisConverters.lambda$static$1(JedisConverters.java:129)

at org.springframework.data.redis.connection.jedis.JedisConverters.toBytes(JedisConverters.java:344)

at org.springframework.data.redis.connection.jedis.JedisConverters.<clinit>(JedisConverters.java:136)

at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.<clinit>(JedisConnectionFactory.java:85)

at applets.common.config.RedisConfig.JedisConnectionFactory(RedisConfig.java:117)

at applets.common.config.RedisConfig$$EnhancerBySpringCGLIB$$7312b2a1.CGLIB$JedisConnectionFactory$1(<generated>)

at applets.common.config.RedisConfig$$EnhancerBySpringCGLIB$$7312b2a1$$FastClassBySpringCGLIB$$99f19937.invoke(<generated>)

at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)

at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)

at applets.common.config.RedisConfig$$EnhancerBySpringCGLIB$$7312b2a1.JedisConnectionFactory(<generated>)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)

... 47 common frames omitted

Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.util.SafeEncoder

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 62 common frames omitted

继续查找问题的解决办法,参考博文为  https://www.cnblogs.com/renjianjun/p/13611140.html

修改方式为将redis.clients的版本切换为3.3.0即可,重新启动,报了一个警告信息如下:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

大致意思就是com.mysql.jdbc.Driver这个驱动类已经弃用了,需要使用新的驱动类com.mysql.cj.jdbc.Driver。

修改配置,将com.mysql.jdbc.Driver 修改为 com.mysql.cj.jdbc.Driver,从新启动还是有问题。

问题二:配置的改动,有好几个地方的配置都有改动,例举如下:

server.context-path=/applets 修改为server.servlet.context-path=/applets

spring文件上传大小配置和http请求大小配置

spring.http.multipart.maxFileSize=100Mb

spring.http.multipart.maxRequestSize=1000Mb

修改为

spring.servlet.multipart.max-file-size=100Mb

spring.servlet.multipart.max-request-size=100Mb

参考文章 https://blog.csdn.net/weixin_40816738/article/details/119878720

问题三:单位换算问题

启动继续报错,报错信息为

Failed to bind properties under 'spring.servlet.multipart.max-request-size' to org.springframework.util.unit.DataSize:

Property: spring.servlet.multipart.max-request-size

Value: 100Mb

Origin: "spring.servlet.multipart.max-request-size" from property source "applicationConfig: [classpath:/application-dev.properties]"

Reason: failed to convert java.lang.String to org.springframework.util.unit.DataSize

大致意思就是底层读取配置文件中最大文件上传大小和请求大小信息时,使用的是字节来读取,不能添加单位Mb

参考文章https://blog.csdn.net/guocunlei25/article/details/90232243

将100Mb修改为对应的字节单位,并且不添加单位即可。

spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=104857600
spring.servlet.multipart.max-request-size=104857600

单位在线换算的网址为http://www.bejson.com/convert/filesize/

配置全部修改好后,重新启动项目,正常运行。至此项目升级改造完毕,从此开启springboot2.x时代。

Springboot-1.5.10.RELEASE 升级到 2.2.4.RELEASE版本遇到的一些问题总结的更多相关文章

  1. 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点

    一.前提 升级前 => 升级后 Spring Boot 1.5.x => Spring Boot 2.0.4.RELEASE Spring Cloud Edgware SR3 => ...

  2. 易升地址,windows 10, 1511 升级 1607 仍然有效

    https://www.microsoft.com/zh-cn/software-download/windows10 易升地址, windows 10 ,1511 升级 1607 仍然有效

  3. 【转】python 2.6.6升级到python 2.7.x版本的方法

    1.下载python2.7.x wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz 2.解压并编译安装 tar -zxvf Py ...

  4. 12 Release History for go go语言的版本历史

    Release History Release Policy go1.11 (released 2018/08/24) go1.10 (released 2018/02/16) Minor revis ...

  5. 各个版本 Windows 10 系统中自带的 .NET Framework 版本

    原文各个版本 Windows 10 系统中自带的 .NET Framework 版本 Windows 名称 Windows 版本 自带的 .NET Framework 版本 Windows 10 Oc ...

  6. 升级PHPstudy自带的mysql版本 从5.5升级到5.7.22

    原文:升级PHPstudy自带的mysql版本 从5.5升级到5.7.22 版权声明:请注意:如需转载请注明出处. https://blog.csdn.net/qq_32534555/article/ ...

  7. xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

    xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题) 前两天为了适配 iOS10 的系统 我将xcode 7.3 升级到了 xcode 8.0 但是 ...

  8. 升级cocoapods到1.2 beta版本的方法

    最近写Swfit3.0, 要用到一些框架, 然后就用cocoapods嘛, 结果说要cocoapods1.1.0版本才行, 而自己的是cocoapods1.0.1版本的, 所以就想着升级嘛, 结果就遇 ...

  9. 【集美大学1411_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 软件工程课结束了,大家开心吗?是不是再也不用熬夜写代码了?如果这门课你真的熬夜写代码了,相信你一定有收获,如果这门课结束了你觉得是自己一个全新的开始,那么这门课的意义就实现了.团队作业全 ...

  10. 【2017集美大学1412软工实践_助教博客】团队作业10——项目复审与事后分析(Beta版本)

    写在前面的话 转眼轰轰烈烈本学期的软工实践就结束了,这个过程中想必在熬夜敲代码,激烈讨论中留下诸多回忆的同时,也收获了不少.恭喜所有团队完成了本阶段冲刺,此外,由于大家的贡献分给的都很平均,将个人贡献 ...

随机推荐

  1. 8.2 Windows驱动开发:内核解锁与强删文件

    在某些时候我们的系统中会出现一些无法被正常删除的文件,如果想要强制删除则需要在驱动层面对其进行解锁后才可删掉,而所谓的解锁其实就是释放掉文件描述符(句柄表)占用,文件解锁的核心原理是通过调用ObSet ...

  2. 2.13 PE结构:实现PE代码段加密

    代码加密功能的实现原理,首先通过创建一个新的.hack区段,并对该区段进行初始化,接着我们向此区段内写入一段具有动态解密功能的ShellCode汇编指令集,并将程序入口地址修正为ShellCode地址 ...

  3. 解决线程不安全的方式(Java)

    一.同步代码块 package com.synchronized1; // 买票示例 // 使用同步代码块解决线程安全问题 public class TicketRunnableImp impleme ...

  4. 时间减去一个小时怎么做 delphi 很方便 看代码

    procedure TfrmTongBuTid.Button1Click(Sender: TObject); begin TopStartModifiedTime_dtp.Time := TopSta ...

  5. 计网学习笔记九 Routing Fundamentals

    在这一讲开始讲路由器的控制平面.简单介绍了routing,两个最小cost算法. 参考看的文章: VC网络中的路由 VC网络和数据报网络中路由的区别:Differences between Virtu ...

  6. C# 12 中新增的八大功能你都知道吗?

    前言 转眼之间C#都已经更新到了12了,那么C# 12 中新增的八大功能你都了解过吗?今天我们来简单介绍一下C# 12 中新增的八大功能. C#/.NET该如何自学入门?:https://www.cn ...

  7. NC20185 [JSOI2010]缓存交换

    题目链接 题目 题目描述 在计算机中,CPU只能和高速缓存Cache直接交换数据.当所需的内存单元不在Cache中时,则需要从主存里把数据调入Cache.此时,如果Cache容量已满,则必须先从中删除 ...

  8. Innodb存储引擎的文件

    目录 概述 参数文件 日志文件 错误日志 慢查询日志 查询日志 二进制日志 binary log 二进制日志的配置 二进制日志的作用 二进制日志的保存 socket 套接字文件 pid文件 MySQL ...

  9. Windows 进程的一些学习笔记

    进程的内存映像是指内核在内存中如何存放可执行程序文件. 在将程序转化为进程的过程中,操作系统将可执行程序由硬盘复制到内存. 可执行程序和内存映像的区别 可执行程序位于磁盘中而内存映像位于内存中: 可执 ...

  10. Go语言并发编程(2):channel 通道介绍和使用

    一.简介 channel 不仅可以用于 goroutine 间进行安全通信,还可以用于同步内存访问. 而且 Go 社区强烈推荐使用 channel 通道实现 goroutine 之间的通信, 不要通过 ...