当前位置: 首页 > 科技观察

【方向盘】SpringBoot2.5.0正式发布,为环境变量指定前缀的功能很棒

时间:2023-03-11 20:34:59 科技观察

前言北京时间2021年5月21日,SpringBoot2.5.0正式发布。相隔半年左右,2.4.0版本大更新之后,我们对这个版本有什么期待呢?2.4.0版本新特性在这里:SpringBoot2.4.0正式发布,新的配置文件加载机制(不向下兼容)属于专栏【方向盘】-SpringBoot新特性相关下载【源码】本专栏]:https://github.com/yourbatman/FXP-java-ee[技术专栏源码大本营]:https://github.com/yourbatman/tech-column-learning[NuwaKnife-InitializrProject】访问地址:http://152.136.106.14:8761【程序员网盘】公益上线,注册送1G超小容量,帮你练减法:https://wangpan.yourbatman.cn【Java开发package(Mac)]:https://wangpan.yourbatman.cn/s/rEH0提取码:javakit版本约定SpringBoot2.5.0text回想一下,2.4版本的主要新特性不仅是时间过得真快,而且版本SpringBoot的更新越来越频繁:基本上每半年一个中型版本。在肯定社区繁荣的同时,我也感叹:学不会了。SpringBoot2.4.0是一个非常重要的版本升级(与SpringCloud2020.0一起),我们简单回顾一下它的新特性:1.第一个使用新版本号规则的SpringBoot版本什么是Spring技术的新版本号规则stack?点击这里:Spring更改版本号命名规则:此举对非英语国家非常友好2.新的配置文件处理(properties/yaml):这是该版本最重要的升级,提供了一个新的功能弹簧配置。导入支持旨在简化和合理化外部配置的加载方式,并且不向后兼容。这个决心足以体现出Spring家族向云原生发起进攻的决心。当然,一向关注“向下兼容”的SpringBoot也不会突然放之四海而皆准,而是为外部配置提供一个兼容的方案。加上spring.config.use-legacy-processing=true,可以一键切换回旧模式(不推荐)3.删除spring-boot-starter-test中的VintageEngine依赖。VintageEngine属于Junit5的一个模块。它的作用是允许JUnit5运行用JUnit4编写的测试,从而提供向下兼容性。这个移除意味着从SpringBoot2.4.0开始不再兼容JUnit4(如果确实需要兼容,请自行导入相关jar)4.不再注册DefaultServlet。在大多数应用中,SpringMVC提供的DispatcherServlet是唯一需要注册的Servlet。如果还需要,添加属性server.servlet.register-default-servlet=true恢复5.SpringFramework升级到5.3.0版本(SpringFramework5.3.0正式发布,云端继续努力-nativeroad)6.支持Java152.5版本的主要新特性是2.4的升级版。事实上,这个版本并没有太大的升级。让我们找出答案。深色模式iPhone都支持深色模式,Spring又怎能跟不上潮流。其实除了深色模式,文字也变得更清晰,外观更新颖等等。脚本数据源初始化SpringBoot的脚本数据源初始化功能在开发中用的不多,但是在单元测试中用的比较多(单元测试大多使用嵌入式DB)。这个功能简单来说就是:在应用程序启动阶段执行一些SQL脚本(包括DML、DDL)。注意:默认情况下,只有在使用内嵌数据源时才执行SQL脚本(这个行为由spring.sql.init.mode=xxx控制)SpringBoot2.5.0版本重新设计,支持schema.sql和底层实现data.sql脚本,在usage级别配置spring.sql.init.*属性,参考这个类:虽然之前版本的spring.datasource.*已经被deprecated(标记为obsolete,但不删除仍然可以被使用):#Usespring.sql.init.usernameinsteadofspring.datasource.schema-username=YourBatman#Usespring.sql.init.schema-locationsinsteadofspring.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#Usespring.sql.init。mode而不是spring.datasource.initialization-mode=embedded,值得注意的是新方法不再支持独立配置配置中模式和数据的凭据(用户名和密码),因为在大多数情况下我们不需要这样做。如果确实有需要,SpringBoot建议你自定义一个bean,比如org.springframework.jdbc.datasource.init.DataSourceInitializer。关于数据源初始化,SpringBoot2.5.0还提供了一个新的注解:@DependsOnDatabaseInitialization。顾名思义,就是那些需要依赖DataSource初始化(数据源自己初始化)的bean可以标记最后一个注解,SpringBoot管理这个顺序。这个注解的作用和底层原理和@DependsOn注解是一样的,区别是前者是自动的,后者是手动的(需要指出你依赖了哪些bean)。系统环境变量可以指定前缀。从这个版本开始,可以指定系统环境变量。前缀,以便多个不同的SpringBoot应用程序可以在同一环境中运行。使用SpringApplication.setEnvironmentPrefix(...)设置绑定属性时要使用的前缀,如下所示:SpringApplicationapplication=newSpringApplication(MyApp.class);application.setEnvironmentPrefix("yourbatman");application.run(args);这个功能非常方便单机混合部署。移除SpringDataSolr由于SpringData项目在2021.0.0版本中移除了Solr支持,因此SpringBoot在这个版本中也将其干掉了。值得注意的是:SpringData下的Solr,全路径org.springframework.boot.autoconfigure.data.solr下的自动配置类SolrRepositoriesAutoConfiguration及其相关API都被kill掉了。自动配置类org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration依然存在。Spring一直是Java领域的风向标。可见,ElasticSearch的兴起也预示着Solr将成为历史。/info端点默认不再公开。启动本文应用后,访问curllocalhost:8080/actuator/info会得到404,但是之前(比如2.4.0)和之后(是的,你没听说过,比如2.6.0)版本可以正常访问,这有点搞笑。如果想自定义Endpoint端点的开启/关闭,可以这样配置:management.endpoints.web.exposure.include=info,metrics,xxx?更改EL表达式即可实现。通过笔者的数据验证专栏或JavaEE专栏得知:EL是BeanValidation实现的必要功能组件之一。SpringBoot通过spring-boot-starter-validationstarter管理相关依赖。之前使用的org.glassfish:jakrta.el在这个版本之后改为org.apache.tomcat.embed.tomcat-embed-el(可以独立使用,与Tomcat容器无关),对用户!LogShutdownHooks这是一个比较实用的功能:基于jar的应用程序注册一个默认的logshutdownhook,以确保在JVM退出时释放日志资源。如果应用以war形式部署,则不需要这个功能,因为web容器/应用容器会负责清理相关资源。相关代码在这里。默认情况下,钩子会被注册:钩子程序到底做了什么?其实就是资源回收(比如close())。以Logback为例:删除2.3已标记为过期的代码这是SpringBoot一直沿用的规则/规则:标记@Deprecated的API会每隔一个版本删除代码。例如删除org.springframework.boot.autoconfigure.elasticsearch.rest.RestClientBuilderCustomizer,替换为:org.springframework.boot.autoconfigure.elasticsearch.RestClientBuilderCustomizer。Others/actuator/startup支持Get方法(之前只支持post方法)支持Java16支持Gradle7支持Jetty10ApacheHttpClient5WebClient中配置依赖升级:SpringData2021.0、SpringSession2021.0、SpringKafka2.7.0总结Spring对比2.4、Boot2.5没有太多动作,但是有一些不兼容的地方,升级的时候需要多加注意。如果您现在已经在使用SpringBoot2.4.x,则不会有升级的压力。建议升级,为升级到2.6.x打下坚实的基础!本文转载自微信♂《Java方向盘》