大家最近有没有注意到?
当我们创建一个新的Spring Boot项目时,现在有了Spring Boot 4.0.0相关的选项:
Spring Boot 4是基于全新的Spring Framework 7.0.0构建的,如下图所示:
那么问题来了:新版本有哪些重要变化?接下来,让我为大家先睹为快。
1. 优雅的版本控制
新版本引入了对API版本控制的优雅支持,允许开发者通过@RequestMapping
注解中的version
参数来实现版本控制,如下面的代码所示:
程序执行效果:
2. 便捷的Bean注入
新版本引入了新的BeanRegistrar
契约,允许更灵活的Bean注册(一次注册多个Bean)。示例代码如下:
编写单元测试来证明注册的Bean可以正常使用:
3. 空值安全改进
新版本采用JSpecify注解来声明其API的空值安全性,使用@Nullable
表示值可以为空,使用@NonNull
表示不能为空。这与IntelliJ IDEA配合使用可以提供警告或错误消息,如下面的代码所示:
在IntelliJ IDEA中也可以看到警告消息:
不同IDEA版本的显示格式有所不同;作者使用的是IDEA 2024,因为需要较新的版本才能支持新功能。
4. 轻松创建HTTP代理
新版本提供了@ImportHttpServices
注解,使创建HTTP接口代理变得更加容易。示例代码如下(它允许您轻松声明、检测和配置整个HTTP服务组):
5. 其他七项变化
其他升级功能包括:
- • SPEL表达式升级: SPEL表达式现在支持空值安全和Elvis操作符,如下面的代码所示:
这会注入pop3.port
系统属性的值,如果该属性未定义,则注入值25
。
- • GraalVM原生应用支持: 通过Spring AOT技术,应用程序可以编译为原生镜像,显著减少启动时间。
- • 支持Jackson 3.x: 已放弃对Jackson 2.x的支持,升级到Jackson 3.x。
- • Servlet和WebSocket版本升级: 它使用Servlet 6.1和WebSocket 2.2作为Web应用程序的底层实现。这意味着应用程序应该部署在最新的Servlet容器上,如Tomcat 11+和Jetty 12.1+。
- • HttpHeaders优化:
HttpHeaders
操作如下:
- • 功能移除:
- • Spring MVC的XML配置命名空间现已弃用,改为使用Java配置。
- • Spring TestContext Framework中的JUnit 4支持现已弃用。
- • Jackson 2.x支持已弃用,改为使用Jackson 3.x。
- • Spring JCL已停止使用。
- • 最低环境要求提高:
- • Jakarta EE 11 (Tomcat 11+)
- • Kotlin 2.x
- • JSONassert 2.0
- • GraalVM 23
更多升级信息,请参考官方网站:
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-7.0-Release-Notes
总结
编程是一个终身学习的职业。框架和工具的变化意味着我们获得了更便捷、更用户友好的方法,这对开发者来说是有益的。所以,让我们一起学习、使用和实验它们吧。
所有评论(0)