文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot3.0新特性:1、spring.factories文件废弃,自动配置包位置变化 2、Spring Native 快速体验 3、jakata api迁移 3、三方库的支持

2023-09-06 11:12

关注

文章目录

一、SpringBoot3.0

1、spring.factories文件废弃,自动配置包位置变化

有自己写过starter包的友友们一定知道,一定用/META-INF/spring.factories文件定义发现自动配置,但是在springboot 2.7,这个文件就被弃用了,在springboot 3.0 就被彻底移除了。

比如之前定义的/META-INF/spring.factories文件:
在这里插入图片描述
而现在 这个/META-INF/spring.factories并不是不存在了,只是在3.0之后外部自动配置类是不通过这种方式去配置了。而是通过META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,既然他的路径有所改变,那么底层代码一定也是有改变的,相信大家都看过自动装配的原理,不知道的小伙伴可以去看看我之前的文章。

2、Spring Native

Spring Native 也是升级的一个重大特性,支持使用GraalVM将SpringBoot 的应用程序编译成本地可执行的镜像文件,可以显著提升启动速度、峰值性能以及减少内存使用。
我们传统的应用都是编译成字节码,然后通过JVM解释并最终编译成机器码来运行,而Spring Native则是通过AOT提前编译为机器码,在运行时直接静态编译成可执行文件,不依赖JVM。GraalVM的即时编译器和AOT编译器可以显著提高应用程序的性能。据测试,GraalVM的性能可以比传统的JVM高出20%-100%。
近几年来,Go语言火了,Go语言是一种编译型语言,我们需要先把Go代码直接编译成为一个二进制执行文件,比如windows上的exe文件,然后直接运行exe文件就能快速启动程序。
如果说,十年前,Spring是Java的春天,那现在GraalVM就是Java的救世主,Java要想不被Go挤掉,整个Java生态都要向GraalVM靠齐。

在这里插入图片描述

快速体验

下载GRaalvm
https://github.com/graalvm/graalvm-ce-builds/releases
在这里插入图片描述
下载之后解压安装。
配置
在这里插入图片描述
配置完之后可以看下版本
在这里插入图片描述
安装Native lmage工具
如果没有安装该工具,maven在打包的时候会自动下载,但建议提前安装打包工具。这一步由于会从github上下载资源、所以会比较久久可能会连接超时,所以需要多试几次。

gu install native-image

在这里插入图片描述
到你项目根目录运行生成exe文件
时间可能会有点久
mvn -Pnative native:compile
在这里插入图片描述
然后在输出目录就会生成exe文件,
在这里插入图片描述
启动,性能加倍。

3、jakata api迁移

从Java EE APIs 到 Jakarta EE
Spring Boot 3开始,所有的Java EE Api都需要迁移到Jakarta EE上来。大部分用户需要修改import相关API的时候,要用jakarta替换javax。比如:原来引入javax.servlet.Filter的地方,需要替换为jakarta.servlet.Filter。但还有一些依赖Java EE API的第三方库,目前还没有得到很好的支持,所以在Spring Boot 3中暂时会先移除这类组件的支持(比如:EhCache 3、Infinispan、Jolokia、Pooled JMS等)。所以,目前的M1版本相较2.x版本来说,会有一些特性的缺失。当然大多数应该还只是暂时的,Spring Boot官方会等这些第三方库发布Jakarta兼容库之后再重新引入。

3、三方库的支持

Spring Boot 3.0 基于并需要 Spring Framework 6。

此版本中升级的其他 Spring 项目包括:

Spring AMQP 3.0.
Spring Batch 5.0.
Spring Data 2022.0.
Spring GraphQL 1.1.
Spring HATEOAS 2.0.
Spring Integration 6.0.
Spring Kafka 3.0.
Spring LDAP 3.0.
Spring REST Docs 3.0.
Spring Retry 2.0.
Spring Security 6.0 (see also what’s new).
Spring Session 2022.0.
Spring WS 4.0.
Spring Boot 3.0 已将所有依赖项从 Java EE 迁移到 Jakarta EE API。尽可能选择 Jakarta EE 10 兼容依赖项,包括:

Jakarta Activation 2.1
Jakarta JMS 3.1
Jakarta JSON 2.1
Jakarta JSON Bind 3.0
Jakarta Mail 2.1
Jakarta Persistence 3.1
Jakarta Servlet 6.0
Jakarta Servlet JSP JSTL 3.0
Jakarta Transaction 2.0
Jakarta Validation 3.0
Jakarta WebSocket 2.1
Jakarta WS RS 3.1
Jakarta XML SOAP 3.0
Jakarta XML WS 4.0
我们还尽可能升级到第三方 jar 的最新稳定版本。这里一些值得注意的依赖项升级包括:

Couchbase Client 3.4
Elasticsearch Client 8.5
Flyway 9
Groovy 4.0
Hibernate 6.1
Hibernate Validator 8.0
Jackson 2.14
Jersey 3.1
Jetty 11
jOOQ 3.16
Kotlin 1.7.20
Liquibase 4.13
Lettuce 6.2
Log4j 2.18
Logback 1.4
Micrometer 1.10
Micrometer Tracing 1.0
Neo4j Java Driver 5.2
Netty 4.1.77.Final
OkHttp 4.10
R2DBC 1.0
Reactor 2022.0
SLF4J 2.0

来源地址:https://blog.csdn.net/wang121213145/article/details/131008257

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯