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

相关推荐
zl_vslam1 小时前
SLAM中的非线性优-3D图优化之相对位姿Between Factor(六)
前端·人工智能·算法·计算机视觉·slam se2 非线性优化
500佰1 小时前
技术包办模式给我带来的反思
前端
g***72701 小时前
spring-boot-starter和spring-boot-starter-web的关联
前端
用户41429296072391 小时前
解决「买不到、买得贵、买得慢」:反向海淘独立站的核心功能设计与案例复盘
前端·后端·架构
N***p3651 小时前
SpringBoot返回文件让前端下载的几种方式
前端·spring boot·后端
五号厂房1 小时前
网络请求库通用封装(GET/POST + 超时 + 传参)+fetch
前端
小雨青年1 小时前
智能交互新范式:拒绝“黑盒”,带你用 MateChat 与 DSL 构建“高可靠”的 NL2UI 引擎
前端·ai·华为云
00后程序员1 小时前
Charles抓包怎么用 Charles抓包方法、网络调试技巧与HTTPS配置详解
后端
anyup1 小时前
🔥牛逼!3分钟生成 5 套主题,还能一键切换暗黑模式!
前端·前端框架·uni-app