我在从Spring Boot 1.4升级到2.0的迁移中做了哪些事情
首先
上一次,我们从SpringBoot 1.5升级到Spring Boot 2.0。
这一次在另一个项目中,我将写一些关于从1.4升级到2.0时遇到的问题。
這一次,我主要遇到困難的是,
-
- 問題の原因が 1.4->1.5の部分なのか、1.5->2.0の部分なのかの切り分けに時間がかかった
-
- Thymeleafの影響が大きいのでテストが大変
-
- SpringSessionでのシリアライズ/デシリアライズまわり
- 本番デプロイ時の対策
这附近。
升级Spring Boot版本
更新spring-boot-starter-parent的版本
在pom.xml文件中指定Spring Boot的版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath />
</parent>
删除HikariPC的依赖关系。
由于最初使用HikariPC,所以将其从依赖关系中移除。
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
编译并解决错误逐步前进。
找不到SpringBootServletInitializer。
由于SpringBootServletInitializer的包已更改,因此需要重新导入。
找不到org.springframework.boot.context.embedded
由于包名已更改为 org.springframework.boot.web.servlet,请重新导入。
找不到 DataSourceBuilder。
由于包装已更改,因此需要重新导入。
WebMvcConfigurerAdapter 的弃用
将 extends WebMvcConfigurerAdapter 更改为 implements WebMvcConfigurer。
@EnableWebMvcSecurity已被弃用。
更改为 @EnableWebSecurity。
找不到org.apache.velocity.app
从速度转变为胡子。
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-mustache</artifactId>
+ </dependency>
将 velocity的模板文件*.vm替换为mustache模板文件*.mustache。
※可以在application.properties等文件中进行更改。
根据mustache模板的格式调整
${hoge}
↓
{{hoge}}
用这种感觉全部替换
虽然可以使用Shell或其他工具进行批量替换,但如果使用IntelliJ的重构功能,它还能找到调用代码并告诉你,所以如果替换数量不多的话,使用IntelliJ的重构可能更好。
找不到org.json
添加以下依赖关系
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
</dependency>
请使用以下包重新导入:
org.springframework.boot.configurationprocessor.json.JSONObject
在调用SpringApplication.run时出现错误。
SpringApplication.run方法的参数已经发生了变化。
以下的修正如下:
public static void main(String[] args) {
- Object[] objects = { HogeApplication.class, FugaService.class };
- SpringApplication.run(objects, args);
+ final SpringApplication application = new SpringApplication(HogeApplication.class, FugaService.class);
+ application.run(args);
}
顺便继承下面的类。
SpringBootServletInitializer: 春季启动器Servlet初始化器
对JPA方法修改的处理
悄然修复
无法找到AutoConfigureTestDatabase。
将导入的包从import org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureTestDatabase;更改为import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
Thymeleaf的迁移
将”th:substituteby”替换为”th:replace”
用机械化的方式
find src/main/resources -type f -name "*.html" -print | xargs sed -i -e 's/th:substituteby/th:replace/g'
删除link标签中type=”text/css”的CSS加载
这样以机械方式
find src/main/resources -type f -name "*.html" -print | xargs sed -i -e 's@type=\"text/css\"@@g'
删除 inline=”text” / inline=”inline”。
在查看内容的同时进行删除。