Spring Boot 2.0 迁移指南

本文档详细介绍了将应用程序从 Spring Boot 1.x 迁移到 2.0 的过程,包括Java版本要求、配置属性变化、构建工具调整、依赖管理、可执行JARs和WARs的构建、配置更新、Spring Boot特性更新、安全配置更改、数据库配置和初始化、NoSQL集成、缓存、批量处理、测试以及Actuator的改动。特别指出,Spring Boot 2.0需要Java 8及以上版本,不再支持Java 6和7,且配置属性进行了大量调整,如默认使用CGLIB代理,以及Spring MVC路径匹配行为的更改等。
摘要由CSDN通过智能技术生成

前提

本文档将帮助您把应用程序迁移到 Spring Boot 2.0。

在你开始之前

首先,Spring Boot 2.0需要Java 8或更高版本。Java 6 和 7 不再受支持。

在 Spring Boot 2.0 中,许多配置属性被重新命名/删除,开发人员需要更新application.properties/ application.yml相应的配置。为了帮助你,Spring Boot 发布了一个新spring-boot-properties-migrator模块。一旦作为依赖添加到项目中,这不仅将分析应用程序的环境并在启动时打印诊断信息,而且还会在运行时为您暂时迁移属性。这是您的应用程序迁移期间必须具备的条件:

1<dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-properties-migrator</artifactId> 4</dependency>

注意:完成迁移后,请确保从项目的依赖关系中删除此模块。

构建您的 Spring Boot 应用程序

Spring Boot Maven 插件

如今暴露为属性的插件配置属性都以一个spring-boot前缀开始,以保持一致性并避免与其他插件发生冲突。

例如,以下命令prod使用命令行启用配置文件

1mvn spring-boot:run -Dspring-boot.run.profiles=prod

Surefire 默认值

自定义包含/排除模式已与最新的 Surefire 默认设置保持一致。如果您依赖我们的,请相应地更新您的插件配置。他们曾经如下:

1<plugin> 2 <groupId>org.apache.maven.plugins</groupId> 3 <artifactId>maven-surefire-plugin</artifactId> 4 <configuration> 5 <includes> 6 <include>**/*Tests.java</include> 7 <include>**/*Test.java</include> 8 </includes> 9 <excludes> 10 <exclude>**/Abstract*.java</exclude> 11 </excludes> 12 </configuration> 13</plugin>

PS: 如果您使用 JUnit 5,则应将 Surefire 降级到 2.19.1。该**/*Tests.java版本不包含此模式,因此如果您依赖该模式,请确保将其添加到您的配置中。

Spring Boot Gradle 插件

Spring Boot 的 Gradle 插件在很大程度上已被重写,以实现许多重大改进。您可以在其参考文献和API文档中阅读关于插件功能的更多信息。

依赖管理

Spring Boot 的 Gradle 插件不再自动应用依赖管理插件。相反,Spring Boot 的插件现在可以通过导入正确版本的spring-boot-dependencies BOM 来应用依赖管理插件。这使您可以更好地控制配置依赖性管理的方式和时间。

对于大多数使用依赖管理插件的应用程序来说就足够了:

 
 

1apply plugin: 'org.springframework.boot' 2apply plugin: 'io.spring.dependency-management' // <-- add this to your build.gradle

注意:依赖管理插件仍然是 spring-boot-gradle-plugin 的传递依赖项,所以不需要在 buildscript 配置中将其列为类路径依赖项。

建立可执行的 Jars 和 Wars

该bootRepackage任务已被替换bootJar,并bootWar分别建立可执行的 Jars 和 Wars 的任务。jar和war任务不再参与。

配置更新

BootRun,BootJar和BootWar任务现在都使用mainClassName的属性来配置主类的名称。这使得三个特定于引导的任务相互一致,并将其与 Gradle 自己的应用程序插件进行对齐。

Spring Boot 特性

默认代理策略

Spring Boot 默认使用 CGLIB 代理,包括 AOP 支持。如果你需要基于代理的代理,你需要设置spring.aop.proxy-target-class为false。

SpringApplication

Web 环境

Spring Boot 应用程序现在可以在更多模式下运行,因此spring.main.web-environment现在不推荐使用属性来支持spring.main.web-application-type更多的控制。

如果您想确保应用程序不启动 Web 服务器,则必须将该属性更改为:

1spring.main.web-application-type=none

注意:还有一个setWebApplicationType上SpringApplication,如果你想这样做编程。

Spring Boot 应用程序事件更改

我们已经添加了一个新事件ApplicationStartedEvent。 ApplicationStartedEvent在上下文刷新之后但在任何应用程序和命令行参数被调用之前发送。 ApplicationReadyEvent在任何应用程序和命令行参数被调用后发送。它表示应用程序已准备好为请求提供服务。

请参阅更新的参考文档。

Banner

在我们限制 Spring Boot 使用的根名称空间的数量的过程中,与标志相关的属性已被重定位到spring.banner。

外部化配置

轻松的绑定

有关宽松绑定的规则已经收紧。我们假设一个现有的acme.my-project.my-name属性:

  1. 所有前缀必须是 kebab格式(小写,连字符分隔)acme.myProject或acme.my_project无效 - 您必须acme.my-project在此处使用。

  2. 属性名称可以使用 kebab-case(my-name),camel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值