255.0.0.0子网掩码相应的cidr前缀表示法是?_如何将项目迁移至 Spring Boot 2.0?

优质文章,第一时间送达

503442a0a1ba651762ee1d1c42ca4554.png

作者 | oschina

链接 | oschina.net/translate/spring-boot-2-0-migration-guide

前言

官方宣布于 2019/08/01 不再更新维护 Spring Boot 1.5x 版本,建议迁移到2.0。近日有读者询问久一如何进行迁移,其实官方早就发布文档供开发者参考迁移,发布的是英文文档,国内一大批翻译爱好者对此文档进行了翻译。

参与本篇文章翻译的开发者有:Tocy,dreamanzhao,Tot_ziens,浪子_仗剑走天涯,溪边九节,DAOYUAN0626,360linker,kukaqin,Dpound0。

本文档主要通过开发指南的方式来帮助您将应用程序迁移到 Spring Boot 2.0。

在你开始之前

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

在 Spring Boot 2.0 中,许多配置属性已被重命名或被删除,相应地,开发者需要升级他们的 application.properties/application.yml。为了方便升级,Spring Boot 发布了一个新的 spring-boot-properties-migrator 模块。只要将其作为依赖添加到项目中,它不仅会分析应用程序的环境并在启动时打印诊断信息,而且还会在运行时为项目临时迁移属性。在您的应用程序迁移期间,这个模块是必备的:

 org.springframework.boot spring-boot-properties-migrator

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

如果你想查看具体内容,请参阅以下资源,或者继续阅读下一节。

Spring Boot 2.0.0 发布说明

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0.0-Release-Notes

使用 Java 9 运行 Spring Boot

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-with-Java-)

构建你的 Spring Boot 应用

Spring Boot 的 Maven 插件

为保持一致性,以及避免与其它插件的冲突,现在暴露的插件配置属性都以 spring-boot 为前缀。

例如,使用下面的命令行能启用名字为 foo 的配置文件:

mvn spring-boot:run -Dspring-boot.run.profiles=foo
Surefire 插件的默认值

惯用的 include/exclude 配置模式已经和最新的 Surefire 插件默认集成。如果依赖于此插件,需要相应地更新插件配置。之前对应的配置如下:

 org.apache.maven.plugins maven-surefire-plugin   **/*Tests.java **/*Test.java   **/Abstract*.java  

注意:如果你使用的是 JUnit 5 版本,你应该将 Surefire 降级到 2.19.1 版本。**/*Tests.java 模式不包含在此版本,所以如果你依赖于它,请确保在你已配置文件中将其添加。

注意:如果你使用的是 JUnit 5 版本,你应该将 Surefire 降级到 2.19.1 版本。**/*Tests.java 模式不包含在此版本,所以如果你依赖于它,请确保在你已配置文件中将其添加。

Spring Boot 的 Gradle 插件

Spring Boot 的 Gradle 插件经过了重大的重写,并带来了大量的改进。你可以通过参阅手册和 api 文档以了解插件的功能。

依赖管理

Spring Boot 的 Gradle 插件不再自动应用依赖管理插件。与之代替的是,Spring Boot 的插件现在可以通过导入正确版本的 spring-boot-dependencies bom 来应用依赖管理插件。当依赖管理被配置的时候,这一点会让你有更多的控制权。

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

apply plugin: 'org.springframework.boot'apply plugin: 'io.spring.dependency-management' // 

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

构建可执行的 jar 和 war

bootRepackage 任务已经被替换成 bootJar 和 bootWar 任务,分别用于构建可执行的 jar 包和 war 包。

配置更新

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

Spring Boot 特性

默认动态代理策略

Spring Boot现在默认使用CGLIB动态代理(基于类的动态代理), 包括AOP. 如果需要基于接口的动态代理(JDK基于接口的动态代理) , 需要设置spring.aop.proxy-target-class属性为false.

SpringApplication

Web Environment

Spring Boot 应用现状可以运行于更多的模式, 所以spring.main.web-environment属性现在不赞成使用, 可以使用spring.main.web-application-type提供更多功能.

如果想让应用以非web服务方式启动, 需要更改属性值:

spring.main.web-application-type=none

Tip:可以通过SpringApplication的setWebApplicationType方法实现

Spring Boot 应用时间变更

我们提供了一个新的事件(event)-ApplicationStartedEvent. ApplicationStartedEvent在context刷新之后, 应用或命令行调用之前发送(send). ApplicationReadyEvent在应用活命令行调用之后发送. 表名应用以准备好提供服务。

参考 updated reference documentation.(https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-application-events-and-listeners)

Banner

我们想要减少Spring Boot使用的命名空间数量, banner-related属性迁移到spring.banner.

外部化配置

Relaxed binding 宽松绑定

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

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

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

3. 环境属性(来自OS环境变量)必须使用常规的大写下划线格式,其中下划线只能用于分隔关键词的各个部分,ACME_MYPROJECT_MYNAME

新的宽松绑定有若干优势:

-只要键值是按照标准格式定义的,就无需担忧在 @ConditionalOnProperty: 中键值的结构,被支持的宽松的变量将会自动透明的工作。

-如果你正在使用 prefix 属性,你可以简单地通过使用 name 或者value 属性 放入全键值。

-源于Environment 关注自动化,RelaxedPropertyResolver 将不再可用:env.getProperty("com.foo.my-bar") 将找到一个 com.foo.myBar 属性。

org.springframework.boot.bind 包将不再可用,现被 new relaxed binding infrastructure 替换。

特别是,RelaxedDataBinder 相关的应用方式被替换为新的绑定API。下面的列子实现一个 com.foo 为前缀的配置到一个 POJO。

new Binder(ConfigurationPropertySources.from(propertySource)) .bind("com.foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值