Day 18:01. 基于 SpringBoot4 开发后台管理系统-快速了解一下 SpringBoot4 新特性

一、前言

作为个人项目,如果你需要快速上线,那么我不推荐使用最新版本。但是因为我的产品就是这个专栏,传达的是一种学习的方式,所以"踩坑"也是我这个产品的一部分,我希望通过"踩坑",然后展示怎么一步步解决问题的,来体现出我这个专栏的价值,让你从"踩坑"中能过有所收获。我不太喜欢那种预制的课程,所有流程全部安排好,如果按照他的节奏来,百分百不会出错,但是一旦你跳出来,碰到问题了就四处抓瞎。我希望你有你自己的节奏,随心所欲一点,自信一点,对自己的项目能够做到完全的掌控。

废话不多说,这里我直接用 Springboot4 搞起来!

官网地址:spring.io/projects/sp...

首先我们来了解一下 SpringBoot4 都有哪些新的特性,在新项目中是不是可以用上。

搜了一下掘金,尽然没有搜到总结的文章。😓

二、SpringBoot4 新特性

这里只是介绍一下作用,如果需要使用,从官方文档查询使用示例

2.1. 版本控制

在之前的工作中,很少碰到一个接口两个版本同时存在的情况(小公司没那么复杂),正常做法就是,通过路径来进行区分,比如 /api/v1/orders/api/v2/orders。现在官方提供了这种能力,在 xxxxMapping 注解中增加了一个 version 字段,可以允许你接收通过 headerurl路径参数请求传参的方式传递过来的 version 值。

这其实是 spring7.0 带来的功能,详细链接:docs.spring.io/spring-fram...

2.2. 容错和重试

新增了 2 个注解。

@Retryable 方法重试

@ConcurrencyLimit 并发限制

详细链接:docs.spring.io/spring-fram...

2.3. 动态注册 Bean

  1. 编程注册 Bean
  2. 配置类 @Import

详细链接:docs.spring.io/spring-fram...

2.4. GraalVM 原生镜像支持大升级

生成原生镜像,启动速度更快,内存占用更小,可以直接编译为二进制文件,无需 JVM 环境即可运行。

docs.spring.io/spring-boot...

www.graalvm.org/

2.5. Jackson 3.x 升级

这个是个大更新,不再兼容 2.x 版本,升级时需要注意,带来的好处就是处理性能提升。

详细链接:docs.spring.io/spring-boot...

2.6. 空值安全判断

@Nullable@NonNull 注解,在编译期提示空值风险。

详细链接:docs.spring.io/spring-fram...

2.7. Http 客户端代理

通过 @ImportHttpServices 批量注册 Http 客户端,微服务场景下服务间接口调用将会很比之前方便很多。

详细链接:docs.spring.io/spring-boot...

2.8. 其他一些我不太关注的新特性

  • SPEL 表达式增强

  • Servlet 6.1+WebSocket 2.2

  • XML 配置彻底移除:@Configuration注解成为唯一选择

  • JUnit 4 弃用:强制使用 JUnit 5

  • Spring JCL 日志模块停用:统一使用 SLF4J+Logback

  • 最低 Java 版本提升至 17

三、新的解决方案

在搜集新特性的过程中,发现了一些新的解决方案,这次项目中可以尝试一下。

3.1. JSON 数据校验处理 (RequestBodyAdvice)

允许通过 json schema 进行参数校验,无需载转成 java 对象,再通过 Bean Validation 或者 if 语句判断进行校验。

json-schema.org/

github.com/networknt/j...

这个特性我们可以尝试一下。大概思路就是实现 RequestBodyAdvice 接口,在 Json 字符串转成对象之前,通过 json scheme 直接进行校验。

3.2. JSON 视图定制序列化

在开发中我们会碰到这样一个场景,返回不同的 VO 对象,但是大多数字段都是一样的可能就极个别字段不同,这时候我们又要重新定义一个,比如 OrderDetailVO, OrderListVO, 而这个视图的作用就是,可以只定义一个 OrderVO,然后通过定义不同的视图对象,来指定序列化哪些字段。

具体文档参考:www.baeldung.com/jackson-jso...

这个有点意思,新项目可以尝试一下。

四、总结

初步了解下来,发现变化还是比较大的,特别是一些版本的变化,很多破坏性更新,所以之前的一些配置类可能要做些变化,比如序列化,反序列化的配置。

我比较感兴趣的是 原生镜像 + 虚拟线程 带来的影响,后面肯定要尝试一下。

好了,有了个大概得了解,接下来就要开始项目的搭建了。

千里之行,始于足下。你的"个人公司"从这第一个2小时开始。欢迎在评论区分享你的进展或遇到的卡点,我会逐一查看,尽可能的帮助解决。我们下一篇文章见!

相关推荐
打小就很皮...5 分钟前
React 19 + Vite 6 + SWC 构建优化实践
前端·react.js·vite·swc
Highcharts.js7 分钟前
使用Highcharts与React集成 官网文档使用说明
前端·react.js·前端框架·react·highcharts·官方文档
这是个栗子7 分钟前
AI辅助编程(二) - 通译千问
前端·ai·通译千问
李梨同学丶11 分钟前
0201好虫子周刊
后端
VT.馒头18 分钟前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
思想在飞肢体在追20 分钟前
Springboot项目配置Nacos
java·spring boot·后端·nacos
数研小生1 小时前
Full Analysis of Taobao Item Detail API taobao.item.get
java·服务器·前端
Shirley~~1 小时前
Vue-skills的中文文档
前端·人工智能
毎天要喝八杯水1 小时前
搭建vue前端后端环境
前端·javascript·vue.js
计算机程序设计小李同学2 小时前
幼儿园信息管理系统的设计与实现
前端·bootstrap·html·毕业设计