SpringBoot2.2发行版新特性
Spring Framework升级
SpringBoot2.2
的底层Spring Framework
版本升级为5.2
。
JMX默认禁用
默认情况下不再启用JMX。 可以使用配置属性spring.jmx.enabled = true启用此功能。 如果您使用IDE功能来管理应用程序,则可能还要在该位置启用该标志。
Java 13支持
Spring Boot 2.2增加了对Java 13的支持。还支持Java 8和11。
性能提升
通过使用proxyBeanMethods=false
Spring Boot的@Configuration
类,减少了启动时间和内存使用量。 proxyBeanMethods
是@Configuration
Spring Framework 5.2 M1中引入的新属性。 proxyBeanMethods
也可作为一个属性@SpringBootApplication
和@SpringBootConfiguration
。
在使用bootRun
Gradle或spring-boot:run
Maven 在开发时启动应用程序时,JVM将配置有标志(-Xverify:none
和-XX:TieredStopAtLevel=1
)以对其进行优化以减少启动时间。在JDK 13上运行时,-Xverify:none
未指定,因为已弃用。
此版本中还进行了其他一些性能改进:
- 绑定大量配置属性所需的时间已大大减少
- 当Spring Boot
PersistenceUnit
通过扫描JPA实体完全准备一个时,由于它是冗余的,因此Hibernate自己的实体扫描已被禁用 - 自动配置中的注入点已经过改进,仅适用于必须创建bean的情况
- 现在仅在启用和公开端点的情况下(通过JMX或HTTP)创建与Actuator端点相关的Bean。
- 编解码器自动配置的条件已得到改善,以便在不再使用编解码器时不再对其进行配置
- Tomcat的MBean注册表默认情况下处于禁用状态,从而将Tomcat的内存占用量减少了大约2MB
延迟初始化
现在可以通过该spring.main.lazy-initialization
属性启用全局延迟初始化以减少启动时间。请注意,使用该功能可能需要付出一定的成本或者代价:
- 在进行任何延迟的初始化时,HTTP请求的处理可能需要更长的时间
- 现在,通常不会在启动时发生故障,直到以后
通过使用注释各自的定义,各个bean可以选择退出延迟初始化@Lazy(false)
。如果无法@Lazy(false)
选择退出延迟初始化,LazyInitializationExcludeFilter
则可以使用Bean代替。例如,要永远不要将IntegrationFlow
bean 设置为惰性,可以使用以下代码:
@Bean
static LazyInitializationExcludeFilter integrationLazyInitExcludeFilter() {
return LazyInitializationExcludeFilter.forBeanTypes(IntegrationFlow.class);
}
JUnit 5
spring-boot-starter-test
现在默认提供JUnit 5。默认情况下,包括JUnit 5的老式引擎以支持现有的基于JUnit 4的测试类,以便您可以在准备好迁移到JUnit 5时进行迁移。也可以在同一模块中混合使用基于JUnit 4和基于JUnit 5的测试类。这使您可以根据需要逐步迁移到JUnit 5。
请注意,JUnit 4的Maven Surefire插件不支持该listener
属性。如果您具有类似于以下内容的Maven配置:
<configuration>
<properties>
<property>
<name>listener</name>
<value>com.example.CustomRunListener</value>
</property>
</properties>
</configuration>
不能使用,junit-vintage-engine
而需要显式回滚到JUnit 4:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
<exclusion>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
DataSource 健康监控
该DataSource
健康指标包含一个额外的validationQuery
与反对使用的验证查询属性DataSource
。同样,该hello
属性提供的查询结果已重命名为result
。
Freemarker模板配置
此版本更改了Freemarker模板的默认模板文件扩展名。这可以使Spring Boot与Web应用程序的安全配置默认值保持一致。升级时,请将现有模板从重命名*.ftl
为*.ftlh
。
DevTools配置目录
现在,全局DevTools设置的首选位置是~/.config/spring-boot
。可以使用以下任何文件:
spring-boot-devtools.properties
spring-boot-devtools.yaml
spring-boot-devtools.yml
@ConfigurationPropertiesScan
@ConfigurationProperties
现在可以通过类路径扫描找到带注释的类,以替代使用@EnableConfigurationProperties
或@Component
。添加@ConfigurationPropertiesScan
到您的应用程序以启用扫描。
在Spring Boot 2.2.0中默认启用了配置属性扫描,但是从Spring Boot 2.2.1开始,您必须使用进行选择
@ConfigurationPropertiesScan
。
@ConstructorBinding
配置属性现在支持基于构造函数的绑定,该绑定允许带@ConfigurationProperties
注释的类不可变。可以通过使用注释一个@ConfigurationProperties
类或其构造函数之一来启用基于构造函数的绑定@ConstructorBinding
。现在可以在配置属性绑定提供的构造函数参数上使用诸如@DefaultValue
和的注释@DateTimeFormat
。
Spring Boot 2.2中的弃用
- 该
logging.file
属性已重命名为logging.file.name
。 - 该
logging.path
属性已重命名为logging.file.path
。 server.connection-timeout
不建议使用该属性,而应使用服务器特定的属性,因为它们的行为并不完全相同。server.use-forward-headers
不赞成使用该财产server.forward-headers-strategy
; 以前server.use-forward-headers=true
会使用Web服务器的本机支持。现在,您可以使用实现相同的功能server.forward-headers-strategy=native
。由于每个服务器都有特定的行为,因此我们现在提供一种替代方法,该替代方法依赖于Spring的ForwardedHeaderFilter
:server.forward-headers-strategy=framework
。开发人员应使用最适合其用例的选项。ReactiveWebServerApplicationContext#getWebServerFactory
。agent
Maven插件的属性已重命名为agents
。- 不赞成使用Joda的时间支持
java.time
。 ApplicationHealthIndicator
赞成的PingHealthIndicator
,就是始终贡献。ConfigurationBeanFactoryMetadata
赞成ConfigurationPropertiesBean
。ConfigurationPropertiesBindingPostProcessor
赞成@EnableConfigurationProperties
或register
方法的构造函数。ConfigurationPropertiesBindingPostProcessor.VALIDATOR_BEAN_NAME
已移至EnableConfigurationProperties.VALIDATOR_BEAN_NAME
。ConfigurationPropertiesBindingPostProcessorRegistrar
赞成@EnableConfigurationProperties
。WebTestClientBuilderCustomizer
已移至org.springframework.boot.test.web.reactive.server
。
链接:https://www.jianshu.com/p/c3d00a8e6598
SpringBoot2.2发行版新特性的更多相关文章
- .NET 4.5.1 预览版新特性
上个月的微软Build大会上宣布了.NET 4.5.1的推出,Heydarian的这个演讲题为".NET开发中的新内容",涵盖了.NET Framework中一些重要的新特性. H ...
- Android Studio 2.0 稳定版新特性介绍
Android Studio 2.0 最终迎来了稳定版本号,喜大普奔. 以下这篇文章是2.0新特性的一些简介. 假设想看具体内容请看这里<Android Studio有用指南> 文章转自这 ...
- 5个难以置信的VS 2015预览版新特性
Visual Studio 2015 Preview包含了很多强大的新特性,无论你是从事WEB应用程序开发,还是桌面应用程序开发,甚至是移动应用开发,VS 2015都将大大提高你的开发效率.有几个特性 ...
- php8.0正式版新特性和性能优化学习
前言 PHP团队宣布PHP8正式GA(链接).php的发展又开启了新的篇章,PHP8.0.0版本引入了一些重大变更及许多新特性和性能优化机制.火速学习下~ JIT(Just in Time Compi ...
- Atitit. visual studio vs2003 vs2005 vs2008 VS2010 vs2012 vs2015新特性 新功能.doc
Atitit. visual studio vs2003 vs2005 vs2008 VS2010 vs2012 vs2015新特性 新功能.doc 1.1. Visual Studio2 1.2. ...
- [Android 新特性] 谷歌发布Android Studio开发工具1.0正式版(组图) 2014-12-09 09:35:40
Android Studio是谷歌于13年I/O大会推出的Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的Androi ...
- TypeScript 2.0候选版(RC)已出,哪些新特性值得我们关注?
注:本文提及到的代码示例下载地址 - Runnable sample to introduce Typescript 2.0 RC new features 作为一个Javascript的超集, Ty ...
- Java 8 新特性终极版
声明:本文翻译自Java 8 Features Tutorial – The ULTIMATE Guide,翻译过程中发现并发编程网已经有同学翻译过了:Java 8 特性 – 终极手册,我还是坚持自己 ...
- Asp.net Core中SignalR Core预览版的一些新特性前瞻,附源码(消息订阅与发送二进制数据)
目录 SignalR系列目录(注意,是ASP.NET的目录.不是Core的) 前言 一晃一个月又过去了,上个月有个比较大的项目要验收上线.所以忙的脚不沾地.现在终于可以忙里偷闲,写一篇关于Signal ...
随机推荐
- Excel使用技巧大全(超全)
目录 Excel 使用技巧集锦 --163 种技巧 一. 基本方法 1. 快速选中全部工作表 2. 快速启动 Excel 3. 快速删除选定区域数据 4. 给单元格重新命名 5. 在 Excel 中选 ...
- tableau分布式添加节点
参考: 两节点的安装:https://zhuanlan.zhihu.com/p/44732932https://help.tableau.com/current/server-linux/zh-cn/ ...
- [转帖]VPS、虚拟主机、云主机的区别
引用知乎网友通俗的例子解释: https://www.cnblogs.com/fjping0606/p/9993849.html 其实 应该是 vps 只是 单台物理机上面的虚拟机 云主机 可能是资源 ...
- WordPress 在Ubuntu下安装插件、主题输入FTP后无法创建目录
最近自己在搞基于lnmp+wordpress的个人博客, 一切都就绪后,想改变下自己的主题,然后去Wordpress里面内置的主题安装下载的时候,提示:无法创建目录! 一般我们在Ubuntu系统上面安 ...
- 洛谷 P1809 过河问题 题解
题面 这道题是一道贪心+DP的好题: 首先排序是一定要干的事情. 然后我们分情况处理: 1.如果剩一个人,让最小的回来接他 2.如果剩两个人,让最小的回来接,剩下的那两个人(即最大的两个人)过去,让次 ...
- echarts图标使用(一)
var data = []; // Parametric curve // for (var t = 0; t < 25; t += 0.001) { // var x = (1 + 0.25 ...
- Hdu 4738【tanjan求无向图的桥】割边判定定理 dfn[x] < low[y]
题目: 曹操在长江上建立了一些点,点之间有一些边连着.如果这些点构成的无向图变成了连通图,那么曹操就无敌了.刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥.但是诸葛亮把所有炸弹都带走了,只留下 ...
- CDH配置YARN动态资源分配
场景:根据不同项目或不同用户,对yarn资源队列进行划分,达到资源管控,任务管控的目的 yarn资源队列参数设置 当设置为 true 时,如果未指定池名称,Fair Scheduler 将会使用用户名 ...
- 第99:真正理解拉格朗日乘子法和 KKT 条件
- jquery 保留两位小数
jquery 通过 toFixed 保留两位小数 <script> var num = 12.21654; console.log(num.toFixed(2)) </script& ...