删除不推荐使用的类/方法/属性
在该版本中,Spring Boot删除了2.2版本中不推荐使用的大多数类,方法和属性。请确保升级之前没有再调用不推荐使用的方法。针对于此,下面我举例那些在2.2版本中还“活着”但被弃用(标记有@Deprecated注解),但在2.3版本中已完全删除的类、方法、属性:
- 方法BindResult#orElseCreate
- 属性LoggingApplicationListener#LOGFILE_BEAN_NAME
- 类JodaDateTimeJacksonConfiguration
- 类JestAutoConfiguration
即使如此,有些虽然在2.2就已被弃用,但在2.3.0还存在的,如:ConfigurationBeanFactoryMetadata、CompositeHealthIndicator
配置文件位置支持通配符
Spring Boot现在在加载配置文件时支持通配符位置。默认情况下,jar外部的config/*/位置是被支持的。当配置属性有多个源时,比如在Kubernetes这样的环境中非常有用。
特点说明:jar包外,jar包外,jar包外,放在内部(比如resource目录下是没有此特针的),下面有示例证明
简单的说,如果你有MySql的配置和Redis配置的话,你就可以把他们分开来放置,隔离性更好目录也更加清晰了:
- mysql:/config/mysql/application.properties
- redis:/config/redis/application.properties
工程目录如下截图:
运行程序:
public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(Boot23Demo1Application.class, args); ConfigurableEnvironment environment = context.getEnvironment(); System.out.println(environment.getProperty("mysql.name")); System.out.println(environment.getProperty("redis.name")); context.close(); }
结果输出:
mysql redis
但如果你把文件放在jar包内,形如这样,是没有效果的:
输出为null null,因此使用时需要稍加注意哈~
web下的日期转换支持配置
现在时间/日期的转换现在可以通过属性进行配置了,这补充了对格式化日期值的现有支持。比如对于MVC和WebFlux来说,它们的配置项分别如下:
- spring.mvc.format.date
- spring.mvc.format.date-time
- spring.mvc.format.time
- spring.webflux.format.date
- spring.webflux.format.date-time
- spring.webflux.format.time
这个怎么用,相信大家都会,一看就知道什么含义。但是,但是,但是:请一定做好充分测试,并且充分考虑兼容性,因为你这动的是接口层的东西~
其它新特性
更改某些依赖最低版本要求
主要体现在如下两处:
- 如果你使用Gradle构建,支持
Gradle 6.3+
。当然喽5.6.x
也支持,只是标记为@Deprecated不推荐使用了 - 如果你使用Jetty嵌入式容器,版本要求是
Jetty 9.4.22+