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小时开始。欢迎在评论区分享你的进展或遇到的卡点,我会逐一查看,尽可能的帮助解决。我们下一篇文章见!

相关推荐
想学后端的前端工程师6 分钟前
【Vue3组合式API实战指南:告别Options API的烦恼】
前端·javascript·vue.js
码财小子10 分钟前
记一次服务器大并发下高延迟问题的定位
后端
否子戈15 分钟前
WebCut前端视频编辑UI框架一周开源进度
前端·音视频开发·ui kit
我是小妖怪,潇洒又自在23 分钟前
springcloud alibaba(九)Nacos Config服务配置
后端·spring·spring cloud
昔人'39 分钟前
`corepack` 安装pnpm
前端·pnpm·node·corepack
萌萌哒草头将军42 分钟前
pnpm + monorepo 才是 AI 协同开发的最佳方案!🚀🚀🚀
前端·react.js·ai编程
Victor35644 分钟前
Netty(26)如何实现基于Netty的RPC框架?
后端
Victor3561 小时前
Netty(25)Netty的序列化和反序列化机制是什么?
后端
qq_12498707531 小时前
重庆三峡学院图书资料管理系统设计与实现(源码+论文+部署+安装)
java·spring boot·后端·mysql·spring·毕业设计
hboot2 小时前
💪别再迷茫!一份让你彻底掌控 TypeScript 类型系统的终极指南
前端·typescript