青少年易学老难成,一寸时间不能轻。 本文已被https://yourbatman.cn收录;女娲Knife-Initializr项目可公开访问;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning;公号后台回复获得所有小而美的技术专栏
你好,我是。作者的公号是保留地,
?前言
北京时间2021-05-21,Spring Boot 2.5.0
正式发布。相距约半年,继2.4.重大更新0版本后,这个版本能给我们带来什么期待?
2.4.这里有0个版本的新特点:Spring Boot 2.4.0正式发布,新的配置文件加载机制(不向下兼容)
所属专栏
- 【方向盘】-Spring Boot新特性
相关下载
- 本专栏源代码:https://github.com/yourbatman/FXP-java-ee
- 【技术专栏源代码大本营】https://github.com/yourbatman/tech-column-learning
- 【女娲Knife-Initializr访问地址:工程:http://152.136.106.14:8761
- 【程序员专用网盘】公益上线,注册发送1G超小容量,帮你练习:https://wangpan.yourbatman.cn
- 【Java开发软件包(Mac)】:https://wangpan.yourbatman.cn/s/rEH0 提取码:javakit
版本约定
- Spring Boot 2.5.0
?正文
回忆2.4版本的主要新特性
不仅time flies,Spring Boot版本也越来越频繁:基本上是半年的中型版本。在肯定社区繁荣的同时,也叹了口气:学不会。
这是一个非常重要的版本升级(配合Spring Cloud 2020.下面简单回忆一下它的新特点:
- 第一个使用新版本号规则的人Spring Boot版本
- 什么是Spring技术栈新版本号规则?点击这里:Spring改变版本号命名规则:此举对非英语国家非常友好
- 处理新的配置文件(properties/yaml):这是该版本最重要的升级,提供了新功能
spring.config.import
支持,旨在外部配置的加载方式不向下兼容,足以体现这种决心Spring家族进攻云原生的决心。当然,一直关注向下兼容Spring Boot不会突然一刀切,而是提供了外部化配置的兼容方案,配上spring.config.use-legacy-processing = true
可以一键回到旧模式(不推荐) - spring-boot-starter-test中删除Vintage Engine依赖。Vintage Engine属于Junit5的一个模块,其功能是允许使用JUnit 5运行用JUnit 从而提供了向下兼容的能力。这次去掉意味着从Spring Boot 2.4.0开始不再兼容JUnit 4(如需兼容,请自行导入相关内容jar)
- 不再注册DefaultServlet。在绝大多数应用中,Spring MVC提供的DispatcherServlet是需要注册的Servlet。如有必要,增加属性
server.servlet.register-default-servlet = true
还原 - Spring Framework升级到5.3.0版本(Spring Framework 5.3.0正式发布,继续在云原生路发力)
- 支持Java 15
2.5版本的主要新特性
作为2.4升级版,其实这个版本升级不多,了解一下。
?暗黑模式
连iPhone都支持黑暗模式,Spring不能紧跟潮流。 事实上,除了黑暗模式外,单词变化清晰,外观更新颖等等。
?初始化脚本数据源
Spring Boot脚本数据源的初始化功能在开发中用得不多,但在单元测试中用得很多(嵌入式单元测试)DB大部分)。这个功能简单来说:在应用启动阶段执行一些。SQL脚本(包括DML、DDL)。
说明:默认情况下,SQL脚本只能在嵌入式数据源中执行(这种行为是由于
spring.sql.init.mode=xxx
控制)
Spring Boot 2.5.重新设计0版支持schema.sql
和data.sql
脚本的底层实现应用于使用层spring.sql.init.*
配置属性,参照本类: 以前版本spring.datasource.*
已被弃用(标记为过时,但未删除仍可使用):
# 使用spring.sql.init.username代替 spring.datasource.schema-username=YourBatman # 使用spring.sql.init.schema-locations代替 spring.datasource.schema=mysql/schema.sql # 使用spring.sql.init.username代替 spring.datasource.data-username=YourBatman_data # 使用spring.sql.init.data-locations代替 spring.datasource.data=mysql/schema.sql # 使用spring.sql.init.mode代替 spring.datasource.initialization-mode=embedded
:新方法不再支持配置schema和data独立配置凭证(用户名和密码),因为大多数情况下我们不需要这样做。如果真的有需求,Spring Boot建议你自定义一个org.springframework.jdbc.datasource.init.DataSourceInitializer
这样的Bean即可。
关于数据源的初始化,Spring Boot 2.5.0还提供了新的注释:@DependsOnDatabaseInitialization
。顾名思义,这意味着那些需要依赖的人DataSource初始化(只有数据源初始化,才能初始化)Bean上次注释可以标记,Spring Boot管理这个顺序。
?系统环境变量可指定前缀
从这个版本开始,可以是系统环境的变量,为了在同一环境中运行多个不同的环境Spring引导应用程序SpringApplication.setEnvironmentPrefix(…)
设置绑定属性时使用的前缀如下:
SpringApplication application = ne SpringApplication(MyApp.class);
application.setEnvironmentPrefix("yourbatman");
application.run(args);
这个功能大大方便了。
✌移除Spring Data Solr
由于Spring Data项目在2021.0.0版本已移除了Solr的支持,因此在此版本里Spring Boot也将其干掉了。
值得注意的是:是干掉了Spring Data下的Solr,全路径org.springframework.boot.autoconfigure.data.solr
下的自动配置类SolrRepositoriesAutoConfiguration
及其相关API。而自动配置类org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration
依旧是存在的哦。
Spring一向是Java领域的风向标,可以看到ElasticSearch的崛起也预示着Solr将要成为历史。
✌/info端点默认不再公开
在此本文启动应用后访问curl localhost:8080/actuator/info
得到的将是404,但在之前(如2.4.0)和之后(是的你没听过,如2.6.0)版本都能正常访问,所以这还蛮滑稽的。
想自定义打开/关闭Endpoint端点,这样配即可:
management.endpoints.web.exposure.include=info,metrics,xxx
✌更改EL表达式实现
通过笔者数据校验专栏或者Java EE专栏知道:EL是Bean Validation实现必备的功能组件之一。
Spring Boot通过spring-boot-starter-validation
启动器来管理相关依赖,之前用的org.glassfish:jakrta.el
,此版本之后改为org.apache.tomcat.embed.tomcat-embed-el
(可独立使用,和Tomcat容器没关系),对使用者无感哈!
✌日志Shutdown Hooks
这是一个比较实用的功能:程序注册一个默认的日志关闭钩子,以确保在JVM退出时释放日志资源。如果应用是war形式部署则无需此功能,因为web容器/应用容器会负责做相关资源的清理工作。
相关代码在这,默认情况下该钩子是会被注册的: 那钩子程序到底做了什么呢?其实就是资源回收嘛(比如close()),以Logback为例:
✌删除2.3已被标记为过期的代码
这是Spring Boot一贯用的规则/规律:标记为@Deprecated
的API会在隔一个版本后删除代码。
如删除org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientBuilderCustomizer
,代替者:org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer
。
✌其它
/actuator/startup
支持Get方法啦(之前只能post方法)- 支持Java 16
- 支持Gradle 7
- 支持Jetty 10
- Apache HttpClient 5配置到WebClient里
- 依赖升级:Spring Data 2021.0、Spring Session 2021.0、Spring Kafka 2.7.0
✍总结
Spring Boot 2.5相较于2.4动作并不大,但也存在一些不兼容性,升级时需多加注意。如若你现在已经在使用Spring Boot 2.4.x版本了,那么升级上来将毫无压力,推荐升级,为升级到2.6.x打好基础!
本专栏上下文
- 【方向盘】Spring Boot 2.4.0正式发布,全新的配置文件加载机制(不向下兼容)
推荐阅读
- 【方向盘】每人送1G超小容量,“BAT网盘”免费助你做减法
- 【方向盘】蚂蚁金服上市了,我不想努力了
- 【方向盘】因“双减”失业,厉经9面,终获美团外卖L8的Offer
我是:一个前25年还不会写Hallo World、早已毕业的。网瘾失足、清考、延期毕业、房产中介、保险销售、送外卖…是我不可抹灭的黑标签
- 👉🏻2006 - 2009:游戏《梦幻西游》骨灰玩家
- 🎓2013.07 清考、毕业答辩3次未通过、延期毕业
- 🏷2013.08-2014.07 宁夏中介公司卖二手房1年,毕业后第1份工作
- ️️🏷2014.07-2015.05 荆州/武汉,泰康人寿卖保险3月、饿了么送外卖2月,还有炸鸡排、直销等第2345份工作
- 🏷2015.08 开始从事Java开发,闯过外包,呆过大厂!多年架构经验,任基础架构/中间件团队负责人
- 🏷2021.08 因“双减政策”失业!历经9面,终获美团外卖L8的offer
- 🙅🏻♀️Java架构师、Spring开源贡献者、CSDN博客之星年度Top 10、领域建模专家、写作大赛1/2届评委
- 📚将出版书籍《Spring奇淫巧技》,致力于国内zui好、zui具深度、zui实用的专栏,为市场贡献微薄之力
- 现在写纯粹技术专栏(公号后台回复),不哗众取宠。如果你也有共鸣,可加我好友(fsx1056342982)一起进步
序号 | 专栏名称 | 简介 |
---|---|---|
01 | 【方向盘】-程序人生 | 程序人生,人生程序 |
02 | 【方向盘】-资讯/新特性 | IDEA、JDK、Spring技术栈…新特性 |
03 | 【方向盘】-IntelliJ IDEA | 熟练使用IDEA就相当拥有物理外挂,助你高效编码 |
04 | 【方向盘】-Bean Validation | 熟练掌握数据校验,减少90%的垃圾代码 |
05 | 【方向盘】-日期时间 | 帮你解决JDK Date、JSR 310日期/其实 的一切问题 |
06 | 【方向盘】-Spring类型转换 | Spring类型转换-框架设计的基石 |
07 | 【方向盘】-Spring static | static关键字在Spring里的应用 |
08 | 【方向盘】-Cors跨域 | 关于跨域请求问题,本专栏足矣 |
09 | 【方向盘】-Jackson | Almost Maybe是最好的Jackson专栏 |
10 | 【方向盘】-Spring配置类 | 专讲@Configuration配置类,你懂的 |
11 | 【方向盘】-Spring技术栈 | 暂无所属小分类的,Spring技术栈大分类 |
12 | 【方向盘】-JDK | 暂无所属小分类的,JDK技术栈大分类 |
13 | 【方向盘】-Servlet | Servlet规范、Web相关内容专题 |
14 | 【方向盘】-Java EE | 从Java EE到Jakarta EE,30年弹指一挥间 |
15 | 【方向盘】-Spring Boot新特性 | Spring Boot中、大版本发布时的新特性系列专题 |
16 | 【方向盘】-Spring Framework新特性 | Spring Framework中、大版本发布时的新特性系列专题 |
17 | 【方向盘】-Spring Cloud新特性 | Spring Cloud中、大版本发布时的新特性系列专题 |
… | … | … |
99 | 大多数专栏均配有源代码,都在这里 |
- 源代码库地址:https://github.com/yourbatman/tech-column-learning
- CSDN主页:https://blog.csdn.net/f641385712
- 掘金主页:https://juejin.cn/user/430664289367192
- 博客园主页:https://www.cnblogs.com/yourbatman
- 个人博客主页:https://yourbatman.cn
- 个人网盘主页:https://wangpan.yourbatman.cn