重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“SpringBoot1.X怎么升级到2.X.md”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot1.X怎么升级到2.X.md”吧!
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的平顺网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
之前的部门管理网站中,缺少部分功能,如发起了请假申请后,又因为某些原因所以不请假了,这时就发现没有删除请假的功能。
在准备进行功能添加时,发现这个项目由于启动于2017年10月,当时SpringBoot 2.X还未发布,所以还是使用1.X版本。介于SpringBoot 1.X版本已经宣布停止支持和维护,所以决定借此机会升级到SpringBoot 2.2.0,遇到一些问题,说明一下。
首先是修改build.gradle文件,由于gradle本身也在升级中,所以改动并非只有SpringBoot版本相关,还有Gradle版本相关的变动。
之前的版本,使用了外部变量
buildscript { ext { springBootVersion ='1.5.9.RELEASE' } }
同时,现在由于SpringBoot完全进入gradle的官方插件库,所以也不在使用原有的
apply plugin: 'java' apply plugin: 'idea' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management'
模式,而是使用了新的plugins
语法
plugins { id 'org.springframework.boot' version '2.2.0.RELEASE' id 'io.spring.dependency-management' version '1.0.8.RELEASE' id 'java' id 'idea' }
另外,由于JUnit从4升级到5,所以相关的依赖也要更新,从
testCompile('org.springframework.boot:spring-boot-starter-test')
变为
testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' }
如果用到了文件上传功能,从1.X升级到2.X后,设定上传文件大小限制的参数也发生了变化
更变态的是,原来1.4.X之前和1.4.X之后的设定还不一样
multipart.maxFileSize=100MB multipart.maxRequestSize=1000MB
spring.http.multipart.maxFileSize=100MB spring.http.multipart.maxRequestSize=1000MB
spring.servlet.multipart.maxFileSize=100MB spring.servlet.multipart.maxRequestSize=1000MB
真是逼死程序员系列啊。看来得好好看看这份升级指南了
升级到SpringBoot2系列后,自带的JUnit会升级到5系列,上述的依赖关系也发生变化,注意其中特地去除了junit-vintage-engine
,这是一个JUnit4的兼容测试引擎,由于项目本身的单元测试并不是很多,所以为了升级彻底,放弃使用老版本,这也造成了相应的测试也要做一些改动。
以下的变化需要改动
@RunWith
JUnit4测试,要用到Spring的能力,需要@RunWith(SpringRunner.class)
,但是JUnit5后,@SpringBootTest
注解直接帮你加了,所以不需要再加这个注解,也可以和Spring正常交互(事实上,JUnit5也变成@ExtendWith(SpringExtension.class)
了,但是由于不用自己手动加,所以就可以简单认为不需要再加@RunWith
即可。
@Test
, Assertions
JUnit4的@Test
和assertEquals
这类class,都从原来的package移到新的package了
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*;
@Before
, @After
等JUnit4中的一些注解,到了JUnit5后发生了变化,如@Before
变成了@BeforeEach
,具体的变化,可以参照这里
随着SpringBoot的版本升级,Thymeleaf也从2.X升级到了3.0系列,由于出现了一个安全漏洞,所以在3.0.10之后,Thymeleaf模板中的onclick
函数不允许直接传递除数字和布尔型外的参数。需要进行修改。
假设 ${username}
的值是一个字符串,那么以前的版本
是正确的,但是到了3.0.10之后,就会出错,应当改为
以上就是本次升级时遇到的一些问题及解决方法。
到此,相信大家对“SpringBoot1.X怎么升级到2.X.md”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!