以上就是给各位分享SpringBoot2.6新特性,其中也会对springboot2.4新特性进行解释,同时本文还将给你拓展mica-auto2.3.0发布,支持SpringBoot2.7.0新特性、
以上就是给各位分享Spring Boot 2.6 新特性,其中也会对spring boot2.4新特性进行解释,同时本文还将给你拓展mica-auto 2.3.0 发布,支持 SpringBoot 2.7.0 新特性、Spring Boot 1.5.x新特性:动态修改日志级别、Spring Boot 2(一):Spring Boot 2.0新特性、Spring Boot 2.0 新特性等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- Spring Boot 2.6 新特性(spring boot2.4新特性)
- mica-auto 2.3.0 发布,支持 SpringBoot 2.7.0 新特性
- Spring Boot 1.5.x新特性:动态修改日志级别
- Spring Boot 2(一):Spring Boot 2.0新特性
- Spring Boot 2.0 新特性
Spring Boot 2.6 新特性(spring boot2.4新特性)
1.info 端点暴露 Java 运行信息 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> application.properties
暴露 info 端点
management.endpoints.web.exposure.include=info management.info.java.enabled=true 2. 默认情况禁止循环引用 如果两个类互相引用对方,那就会发生循环依赖问题。 在 Spring Boot 2.6 版本中,循环引用默认情况下已经被禁止了。如果你的项目存在循环引用问题,那你在启动项目的时候就会报错 如果你想关闭禁止循环引用的话,可以直接修改配置 spring.main.allow-circular-references 为 true 。 3.WebTestClient 支持测试 Spring MVC WebTestClient 诞生之初主要是为了测试 Spring WebFlux 项目,这次改版之后,WebTestClient 已经可以支持普通的 Spring MVC 项目 4.Docker 镜像构建功能增强 Spring Boot 官方提供了 docker-maven-plugin 插件来帮助我们构建 Docker 镜像。 在 Spring Boot 2.6 版本中,这个插件的功能得到了小幅加强: 支持自定义镜像设置额外的 Tags 网络配置 构建缓存配置 5.Maven 构建信息的默认时间 Maven 插件在构建项目的时候可以使用 project.build.outputTimestamp 属性值作为默认构建时间。 6. 自动启用 redis 连接池 你的项目如果依赖了 commons-pool2 的话,Redis(Jedis 和 Lettuce)将会自动启动连接池。 如果你想禁用自动启用连接池,可以设置 spring.redis.jedis.pool.enabled 或 spring.redis.lettuce.pool.enabled 为 false 。
mica-auto 2.3.0 发布,支持 SpringBoot 2.7.0 新特性
更新记录
-
✨ 支持 Spring boot 2.7.0 新特性 @AutoConfiguration。
-
⬆️ 升级 Spring boot 到 2.7.0
注意:mica-auto 并不强制依赖 Spring boot,仅仅是组合了 spring-boot-configuration-processor
依赖,方便使用。mica-auto 2.3.0 理论上支持 Spring boot 所有版本。
关于 Spring boot 2.7.0 @AutoConfiguration
1 @AutoConfiguration 注解
Spring boot 2.7.0 新增 @AutoConfiguration 注解,它用来替换 @Configuration 注解, 我们可以看到它组合了 @Configuration(默认 proxyBeanMethods = false 配置类不进行代理,可节省资源另外对 GraalVM 更加友好)、@AutoConfigureAfter 和 @AutoConfigureBefore 方便使用。
另外 Spring boot 2.7.0 开始推荐使用 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
替换 spring.factories
中的 EnableAutoConfiguration
配置。
2 老的 spring.factories EnableAutoConfiguration 配置
3 新的 AutoConfiguration.imports 配置
使用 mica-auto 2.3.0 在 Spring boot 2.7.x 的配置类中如果使用 @AutoConfiguration
注解就会自动生成到新的 AutoConfiguration.imports 配置中,如果任然使用的是老的 @Configuration
则任然会生成到 spring.factories
中。
使用场景
-
Spring boot starter 开发利器,自动生成 spring.factories、AutoConfiguration.imports、spring-devtools.properties 配置。
-
多模块项目中的子项目,包名不同时的自动配置(主项目不建议添加)。
-
java spi 扩展自动生成配置。
建议关注如梦技术码云:https://gitee.com/596392912 ,更多微服务核心组件值得拥有。
Spring Boot 1.5.x新特性:动态修改日志级别
前天Spring Boot 1.5终于迎来了第一个RELEASE版本:1.5.0,但是由于一个编译依赖问题在第二天直接连击到了1.5.1。该版本的发布包含了超过320位贡献者的奉献、10000多次的代码提交。
每次Spring Boot版本更新所带来的新特性都是我们每个用户特别关注的。虽然其中不少特性可能对于大部分用户来说还不一定适用,但是作为基础知识的储备还是有一定的必要性。对于1.5.x版本的新特性列表读者可以直接查看官方博文:《Spring Boot 1.5.1 released》来了解它们,本文不做这些概要性的介绍。在后续的一段时间内,本博客将会陆续介绍一些笔者关心且将会使用的关于Spring Boot 1.5.x中的一些新特性。
loggers端点
本文我们就来看看Spring Boot 1.5.x中引入的一个新的控制端点:/loggers
,该端点将为我们提供动态修改Spring Boot应用日志级别的强大功能。该功能的使用非常简单,它依然延续了Spring Boot自动化配置的实现,所以只需要在引入了spring-boot-starter-actuator
依赖的条件下就会自动开启该端点的功能(更多关于spring-boot-starter-actuator
模块的详细介绍可见:《Spring Boot Actuator监控端点小结》一文)。
下面,我们不妨通过一个实际示例来看看如何使用该功能:
-
构建一个基础的Spring Boot应用。如果您对于如何构建还不熟悉,可以参考《使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程》一文。
-
在
pom.xml
引入如下依赖(如果使用Intellij中的Spring Initializr的话直接在提示框中选下web和actuator模块即可)。<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
在应用主类中添加一个接口用来测试日志级别的变化,比如下面的实现:
@RestController @SpringBootApplication public class DemoApplication { private Logger logger = LoggerFactory.getLogger(getClass()); @RequestMapping(value = "/test", method = RequestMethod.GET) public String testLogLevel() { logger.debug("Logger Level :DEBUG"); logger.info("Logger Level :INFO"); logger.error("Logger Level :ERROR"); return ""; } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
-
为了后续的试验顺利,在
application.properties
中增加一个配置,来关闭安全认证校验。management.security.enabled=false
不然在访问
/loggers
端点的时候,会报如下错误:{ "timestamp": 1485873161065, "status": 401, "error": "Unauthorized", "message": "Full authentication is required to access this resource.", "path": "/loggers/com.didispace" }
测试验证
在完成了上面的构建之后,我们启动示例应用,并访问/test
端点,我们可以在控制台中看到如下输出:
2017-01-31 22:34:57.123 INFO 16372 --- [nio-8000-exec-1] ication$$EnhancerBySpringCGLIB$$d2a0b1e2 : Logger Level :INFO
2017-01-31 22:34:57.124 ERROR 16372 --- [nio-8000-exec-1] ication$$EnhancerBySpringCGLIB$$d2a0b1e2 : Logger Level :ERROR
由于默认的日志级别为INFO
,所以并没有输出DEBUG
级别的内容。下面我们可以尝试通过/logger
端点来将日志级别调整为DEBUG
,比如,发送POST请求到/loggers/com.didispace
端点,其中请求体Body内容为:
{
"configuredLevel": "DEBUG"
}
重新访问/test
端点,我们将在控制台中看到如下输出,在/test
端点中定义的DEBUG
日志内容被打印了出来:
2017-01-31 22:37:35.252 DEBUG 16372 --- [nio-8000-exec-5] ication$$EnhancerBySpringCGLIB$$d2a0b1e2 : Logger Level :DEBUG
2017-01-31 22:37:35.252 INFO 16372 --- [nio-8000-exec-5] ication$$EnhancerBySpringCGLIB$$d2a0b1e2 : Logger Level :INFO
2017-01-31 22:37:35.252 ERROR 16372 --- [nio-8000-exec-5] ication$$EnhancerBySpringCGLIB$$d2a0b1e2 : Logger Level :ERROR
可以看到,到这里为止,我们并没有重启过Spring Boot应用,而只是简单的通过调用/loggers
端点就能控制日志级别的更新。除了POST请求之外,我们也可以通过GET请求来查看当前的日志级别设置,比如:发送GET请求到/loggers/com.didispace
端点,我们将获得对于com.didispace
包的日志级别设置:
{
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
}
我们也可以不限定条件,直接通过GET请求访问/loggers
来获取所有的日志级别设置,这里就不列举具体返回,读者可以自行尝试。
完整示例Chapter4-2-6
- 开源中国
- GitHub
原文地址:http://blog.didispace.com/spring-boot-1-5-x-feature-1/
本文由 程序猿DD-翟永超 创作,采用 CC BY 3.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
Spring Boot 2(一):Spring Boot 2.0新特性
Spring Boot 2(一):Spring Boot 2.0新特性
Spring Boot依赖于Spring,而Spring Cloud又依赖于Spring Boot,因此Spring Boot2.0的发布正式整合了Spring5.0的很多特性,同样后面Spring Cloud最新版本的发布也需要整合最新的Spring Boot2.0内容。
一、新版本特性
1,基于 Java 8,支持 Java 9
也就是说Spring Boot2.0的最低版本要求为JDK8,据了解国内大部分的互联网公司系统都还跑在JDK1.6/7上,因此想要升级到Spring Boot2.0的同学们注意啦,同时支持了Java9,也仅仅是支持而已。
2,响应式编程
使用 Spring WebFlux/WebFlux.fn提供响应式 Web 编程支持, Webflux 是一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好,此功能来源于Spring5.0。
Spring Boot2.0也提供对响应式编程的自动化配置,如:Reactive Spring Data、Reactive Spring Security 等
3,HTTP/2支持
在Tomcat, Undertow 和 Jetty 中均已支持 HTTP/2
4,对Kotlin支持
引入对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,让你通过惯用的 Kotlin 来运行 Spring Boot 应用程序。
5,全新的执行器架构
全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey
6,支持 Quartz
Spring Boot1.0并没有提供对 Quartz 的支持,之前出现了各种集成方案,Spring Boot2.0给出了最简单的集成方式。
7,Security
大大的简化了安全自动配置
8,Metrics
Metrics 方面,Spring Boot 2引入了Micrometer,来统一metrics的规范,使得开发人员更好的理解和使用metrics的模块,而不需要关心对接的具体存储是什么。
9,监控方面
Spring Boot 2 增强了对 Micrometer 的集成。RabbitMQ、JVM 线程和垃圾收集指标会自动进行 instrument 监控,异步控制器(controller)也会自动添加到监控里。通过集成,还可以对 InfluxDB 服务器进行监控。
10,数据方面
- db方面,默认引入了HikariCP,替代了之前的tomcat-pool作为底层的数据库连接池, 对比于tomcat-pool, HikariCP拥有更好的性能,总而言之就是提高了db的访问速度
- JOOQ的支持
- Redis方面, 默认引入了Lettuce, 替代了之前的jedis作为底层的redis链接方式
- MongoDB\Hibernate优化
11,Thymeleaf 3
Spring Boot 2支持了Thymeleaf 3,Thymeleaf 3相对于Thymeleaf 2性能提升可不是一点点,因为2.0的性能确实不咋地,同时也使用了新的页面解析系统。
12,OAuth 2.0
同时也加入了 对于OAuth 2.0的支持, 使得开发人员更加友好的使用spring-security来完成权限模块的开发
13,依赖组件的更新
- Jetty 9.4
- Tomcat 8.5
- Flyway 5
- Hibernate 5.2
- Gradle 3.4
- Thymeleaf 3.0
注意:最后还有一个小彩蛋,Spring Boot2.0支持了动态gif的启动logo打印.
二、技术名词解释
Spring 现在作为Java开源界的老大,它的一举一动都影响着行业的技术方向,在这次发布的 Release Notes中发现有很多的技术都还没有了解过,也分享出来:
1,WebFlux 是什么?
WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。
非阻塞的关键预期好处是能够以小的固定数量的线程和较少的内存进行扩展。在服务器端 WebFlux 支持2种不同的编程模型:
- 基于注解的 @Controller 和其他注解也支持 Spring MVC
- Functional 、Java 8 lambda 风格的路由和处理
默认情况下,Spring Boot 2使用Netty WebFlux,因为Netty在异步非阻塞空间中被广泛使用,异步非阻塞连接可以节省更多的资源,提供更高的响应度。通过比较Servlet 3.1非阻塞I / O没有太多的使用,因为使用它的成本比较高,Spring WebFlux打开了一条实用的通路。
值得注意的是:支持reactive编程的数据库只有MongoDB, redis, Cassandra, Couchbase
2,HTTP/2
相比 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化:
- HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。
- HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。
- 多路复用,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。
- Server Push:服务端能够更快的把资源推送给客户端。例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求。当客户端需要的时候,它已经在客户端了。
3,JOOQ
JOOQ 是基于Java访问关系型数据库的工具包。JOOQ 既吸取了传统ORM操作数据的简单性和安全性,又保留了原生sql的灵活性,它更像是介于 ORMS和JDBC的中间层。对于喜欢写sql的码农来说,JOOQ可以完全满足你控制欲,可以是用Java代码写出sql的感觉来。
4,Lettuce
Lettuce是一个可伸缩的线程安全的Redis客户端,用于同步,异步和反应使用。 多个线程可以共享同一个RedisConnection。它利用优秀netty NIO框架来高效地管理多个连接。 支持先进的Redis功能,如Sentinel,集群,流水线,自动重新连接和Redis数据模型。
国内使用Jedis的居多,看来以后要多研究研究Lettuce了。
5,HikariCP
HikariCP是一个高性能的JDBC连接池。Hikari是日语“光”的意思。可能是目前java业界最快的数据库连接池。
6,Flyway
Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。
7,Gson
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等
三、是否选择升级
如果想要升级也请先从早期的版本升级到Spring Boot1.5X系列之后,再升级到Spring Boot2.0版本,Spring Boot2.0的很多配置内容和Spring Boot1.0不一致需要注意。
Spring Boot 2.0 新特性
以Java 8 为基准
Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持。
内嵌容器包结构调整
为了支持reactive使用场景,内嵌的容器包结构被重构了的幅度有点大。EmbeddedServletContainer被重命名为WebServer,并且org.springframework.boot.context.embedded 包被重定向到了org.springframework.boot.web.embedded包下。举个例子,如果你要使用TomcatEmbeddedServletContainerFactory回调接口来自定义内嵌Tomcat容器,你现在应该使用TomcatServletWebServerFactory。
Servlet-specific 的server properties调整
大量的Servlet专属的server.* properties被移到了server.servlet下:
Old property | New property |
---|---|
server.context-parameters.* |
server.servlet.context-parameters.* |
server.context-path |
server.servlet.context-path |
server.jsp.class-name |
server.servlet.jsp.class-name |
server.jsp.init-parameters.* |
server.servlet.jsp.init-parameters.* |
server.jsp.registered |
server.servlet.jsp.registered |
server.servlet-path |
server.servlet.path |
由此可以看出一些端倪,那就是server不再是只有servlet了,还有其他的要加入。
Actuator 默认映射
Actuator的端点(endpoint)现在默认映射到/application,比如,/info 端点现在就是在/application/info。但你可以使用management.context-path来覆盖此默认值。
@ConditionalOnBean
@ConditionalOnBean现在的判断条件由OR变为了AND。
Remote CRaSH shell
1.5的时候此远程工具被标为deprecated,2.0的时候将会把这个支持彻底remove掉,以及基于此功能的项目也会被删除掉。
Spring Loaded不再支持
由于Spring Loaded项目已被移到了attic了,所以不再支持Spring Loaded了。现在建议你去使用Devtools。Spring Loaded不再支持了。
Hazelcast自动配置不再支持
不能再自动配置HazelcastInstance进行缓存。 因此,spring.cache.hazelcast.config属性不再可用。
默认connection pool变了
默认的连接池已经由Tomcat切换到了HikariCP。如果你过去使用spring.datasource.type在基于Tomcat的应用程序中强制使用Hikari,现在你可以删除这个覆盖了。同样的,如果想要使用Tomcat的连接池,只需要简单的加入以下配置就可以了:
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
Servlet Filters
针对一个Filter默认的dispatcher类型现在为 DipatcherType.REQUEST,这样就保证了Spring Boot和Servlet默认的配置统一了。
Spring Security
Spring Security的 filter 现在可以自动配置如下类型了: ASYNC, ERROR, and REQUEST 。这样就让Spring Boot中的配置和Spring Security默认配置保持一致了。
Spring Session
Spring Session的 filter 现在支持自动配置如下dispatcher类型 ASYNC, ERROR, and REQUEST 。同样是为了让Spring Boot的配置与Spring Session的默认配置保持一致。值得注意的是从Spring Session 2.0起, Mongo和GemFire 将不再被支持。
Jetty
要求Jetty最低版本为9.4。
Tomcat
要求Tomcat最低版本为8.5。
Hibernate
要求Hibernate最低版本为5.2。
Gradle
要求Gradle最低版本为3.4。
SendGrid
SendGrid最低支持版本是3.2。为了支持这次升级,username和password已经被干掉了。因为API key现在是唯一支持的认证方式。
Starter 的传递依赖的改变
以前有几个Spring Boot starter是依靠Spring MVC和spring-boot-starter-web传递的。 为了对Spring WebFlux的支持,spring-boot-starter-mustache和spring-boot-starter-thymeleaf不再依赖spring-boot-starter-web。现在你要自己选择并添加spring-boot-starter-web或spring-boot-starter-webflux作为依赖。
记住:web和webflux是平行的关系。我们之前的文章中提到过spring webflux。你可以移步查看:Spring 5 新增全新的reactive web框架:webflux。
Solr健康指标
针对Solr的健康检查信息不再是solrStatus这个属性了。现在是status property,是一个标准状态属性,对应于一个的整型值。
默认代理策略
Spring Boot现在默认是使用CGLIB代理,同时包含AOP支持。如果你需要基于代理(proxy-based)的代理策略,你需要把 spring.aop.proxy-target-class
设置为false。
基于CLI的测试
从Spring Boot的CLI中删除了测试支持,现在建议你使用Maven或Gradle构建应用程序,去使用它们提供的丰富的测试支持吧。
@ConfigurationProperties
@ConfigurationProperties
里的ignoreNestedProperties属性已被删除。
Multipart配置改变
为了更好的反映Servlet的特性, spring.http.multipart. 属性已经被命名为 spring.servlet.multipart。
ps:其实就是因为webflux来了,只能把servlet和webflux区分开来。
Mustache 模板默认文件扩展名
过去Mustache模板的默认的文件扩展名是.html。现在.mustache成了官方指定的扩展名,而且很多的IDE插件已经支持了此后缀。你可以通过spring.mustache.suffix来覆盖现在的默认的支持。
Spring Framework 5.0
Spring Boot 2.0 是建立在Spring Framework 5.0之上的(最低要求)。Spring 5最大的亮点就是reactive。你可以去看看这篇:Spring 5 新增全新的reactive web框架:webflux。
松绑定改善
松绑定已经得到改善。这里简单的举个例子:
简单的属性在删除特殊字符然后转成小写后进行绑定。比如:
下面的属性最终都会被映射为spring.jpa.databaseplatform=mysql:
spring.jpa.database-platform=mysql
spring.jpa.databasePlatform=mysql
spring.JPA.database_platform=mysql
有关详细信息,我们可以查阅:https://github.com/spring-projects/spring-boot/wiki/Relaxed-Binding-2.0
WebFlux 和 WebFlux.fn支持
Spring Boot 2.0 提供了一个新的starter ,用来支持Reactive Spring web frameworks。该starter为spring-boot-starter-webflux。其中Reactor Netty是默认的web引擎(spring-boot-starter-reactor-netty)。
Reactive数据库支持
Spring Boot 2.0 对一下的数据库提供了自动配置( auto-configuration )的reactive的支持:
MongoDB (spring-boot-starter-data-mongodb-reactive)
Redis (spring-boot-starter-data-redis-reactive)
Cassandra (spring-boot-starter-data-cassandra-reactive)
@DataMongoTest
测试注解也是支持reactive的。
@WebFluxTest支持
Reactive controller现在可以使用 @WebFluxTest
来测试。它提供的功能和 @WebMvcTest
类似。而且WebTestClient可以直接使用,已经被自动配置(auto-configured)了。
支持使用@SpringBootTest自动配置WebTestClient
当你使用 @SpringBootTest
with an actual server (that is, either DEFINEDPORT or RANDOMPORT), a WebTestClient is available the same way TestRestTemplate is.
使用@SpringBootTest进行WebTestClient自动配置
将@SpringBootTest用于实际服务器(即DEFINEDPORT或RANDOMPORT)时,WebTestClient的可用方式与TestRestTemplate相同。
Gradle插件
Spring Boot的Gradle插件已在很大程度上被重写,以实现一些重大的改进。有关这方面的就不细讲了,感兴趣的同学可以去一探究竟。
/loggers端点POST的状态码改变
针对/loggers端点上POST操作的状态码已又200改为204。
Elasticsearch
Elasticsearch已升级到5.4。 与Elastic公司宣布不再支持嵌入式Elasticsearch的情况一样,NodeClient的自动配置已被删除。就是这么的节奏一致。现在你可以通过使用spring.data.elasticsearch.cluster-nodes自动配置TransportClient,具体value可以是一个或多个要连接的节点的地址。
Quartz Scheduler
Spring Boot 2 针对Quartz调度器提供了支持。你可以加入spring-boot-starter-quartz starter来启用。而且支持基于内存和基于jdbc两种存储。
Spring Data Web配置
Spring Boot公开了一个新的spring.data.web配置名称空间,可以轻松配置分页和排序。
Json starter
一个全新的spring-boot-starter-json starter 聚合了很多常用的json工具,可以支持对json的读写。
它不仅仅提供了jackson-databind而且当你使用java8时候,还提供了有用的模块:jackson-datatype-jdk8, jackson-datatype-jsr310 和 jackson-module-parameter-names。
之前使用jackson-databind的地方就可以使用这个新的starter了。
Thymeleaf starter
Thymeleaf starter现在包含了thymeleaf-extras-java8time,开箱即用。
InfluxDB
如果InfluxDB java client 和 the spring.influx.url 被设置, 一个InfluxDB client现在就会被自动配置。而且现在支持认证。
JdbcTemplate
Spring Boot自动配置(auto-configuration)的JdbcTemplate现在可以通过spring.jdbc.template命名空间进行定制。 此外,自动配置(auto-configuration)的NamedParameterJdbcTemplate在底层就是JdbcTemplate。
jOOQ
Spring Boot现在可以根据DataSource自动检测出jOOQ方言(类似于JPA方言)。
此外,还引入了@JooqTest用于只有jOOQ才能hold的测试场景。
@DataRedisTest
新加了一个测试的时候针对redis的新注解。
强大的Mongo客户端自定义
现在可以通过MongoClientSettingsBuilderCustomizer这个bean来高度定制化Spring Boot的Mongo客户端。
Cassandra
spring.data.cassandra 现在支持池化(pooling)。
Kafka listener支持批量消费
现在支持一次性批量消费多个ConsumerRecord,你可以创建一批的监听器(listener),这样设置:
spring.kafka.listener.type=batch
Web filters 初始化
Web filters 现在在所有支持的容器中都会被立刻初始化。也就是eagerly,急加载。
Auto-configuration 报告
现在不满足条件(unconditional)的class也会被包含进来,在自动配置(auto-configuration)的Actuator端点的response中一并返回。
重置logger操作
现在Loggers端点(endpoint) 支持reset日志级别到默认设置。
Maven 插件属性
插件的配置属性现在的暴露方式有所改变,现在所有的都是以spring-boot为前缀,这是为了避免和其他插件冲突而导致错误。
比如,以下命令行可以启用profile foo:
mvn spring-boot:run -Dspring-boot.run.profiles=foo
Devtools 远程调试
已经从Devtools中删除了通过HTTP进行远程调试的支持。(#9489)
Jetty
为了和Tomcat和Undertow看齐,现在对Jetty的所有的http method的请去都进行压缩,而不是之前那样只对GET request进行压缩(#8184)。
Reactive server 自定义
当配置一个reactive web server时,针对Jetty,Tomcat,Undertow的定制化器现在会被调用 (#9572)。
Jolokia
Jolokia不再是一个endpoint。并且默认是禁用的,这已和其他的web端点保持了一直。它的配置已转移到了management.jolokia。如果想启用 Jolokia, 向你的配置加入management.jolokia.enabled=true就可以了。
数据库迁移
Liquibase 和 Flyway 配置的key 已被转移到了spring 的命名空间下:(比如: spring.liquibase and spring.flyway )。
Auto-configuration排序
@AutoConfigureOrder 默认值由Ordered.LOWEST_PRECEDENCE变为0。 (#10142)
Auto-configuration测试工具
一个新的ApplicationContextRunner 测试工具让我们测试自动配置变得容易。 未来将会把所有的测试套件都迁移到这个模型上。
Java 9 支持
基本支持了Java 9。之所以是“基本”,是因为还没得到用户的验证。
Jedis变为了Lettuce
Redis客户端驱动现在由Jedis变为了Lettuce。使用Jedis的同学们,大概知道方向了吧。
但仍然支持Jedis,那么exclude掉io.lettuce:lettuce-core,然后添加 redis.clients:jedis就是了。
OAuth 2.0 支持
Spring Security OAuth 项目中的功能将会迁移到Spring Security中。将会OAuth 2.0。
Mockito 1.x
Mockito 1.x不再支持@MockBean和@SpyBean。 如果你不使用spring-boot-starter-test来管理依赖关系,则应升级到Mockito 2.x。
JSON-B 支持
除了Jackson 和 Gson,现在还支持了JSON-B 。JSON测试支持也已更新为新的JsonbTester类。
Session Endpoint
Spring Session 用现在可以通过/application/sessions Actuator Endpoint进行查找和删除session。
ConfigurationProperties 验证
如果你希望 @ConfigurationProperties
对象上开启验证,那么只需要添加 @Validated
就可以了。
Spring Mobile
针对Spring Mobile的自动配置和依赖不再支持,已被删除。汗,我们之前的文章中还介绍过这个项目:使用Spring Boot开发一个Spring Mobile程序。
Spring WebFlux支持错误约定
Spring Boot现在让WebFlux的错误约定和MVC保持一致就像使用MVC一样:默认视图和JSON响应错误,自定义错误视图等等。
TLS 配置 和 HTTP/2 支持
你现在可以为你的WebFlux应用配置SSL,使用 server.ssl.*
配置属性。Tomcat, Jetty, Undertow 和 Reactor Netty都支持。
你现在也可以为你的MVC 或 WebFlux应用配置HTTP/2:
使用 server.http2.enabled
。
@KafkaListener支持使用@SendTo
使用了自动配置工厂的Kafka listener现在支持 @SendTo
。
Kotlin扩展
Spring Boot 2.0 发布了Kotlin runApplication扩展:
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
Job command line runner 顺序
CommandLineRunner 现在执行批处理job的启动order是0。
支持自动配置的模板化欢迎页
Spring Boot 2.0 现在支持静态和模板化两种欢迎页类型。它会首先去配置好的静态内容的目录下查找index.html文件,如果没找到,然后就去查找index模板。 只要找到了一个就会被用作欢迎页。
Context path会在启动时被打印
在Spring Boot之前的版本中,对context path貌似并没有那么的重视一样。现在当我们使用内嵌容器的时候, context path 会被打印在HTTP 端口的旁边,像这样:
Tomcat started on port(s): 8080 (http) with context path ''/foo''
测试优化,自动扫描Converter和GenericConverter
Converter 和 GenericConverter beans现在可以被@WebMvcTest和@WebFluxTest自动扫描到了。
Health vs. Status
status endpoint 已经被删除了,现在改成了health。这个health 端点既可以展示status也可以有更多的细节。 health 端点现在默认是被暴露的(只展示status)。如果你希望展示更多的细节信息,可以通过修改属性management.endpoints.health.show-details来实现:
management.endpoints.health.show-details=true
长按指纹
一键关注
深入交流扫描下方二维码加入我的知识星球
点击 “阅读原文” 看看本号其他精彩内容
本文分享自微信公众号 - 程序猿DD(didispace)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
今天关于Spring Boot 2.6 新特性和spring boot2.4新特性的介绍到此结束,谢谢您的阅读,有关mica-auto 2.3.0 发布,支持 SpringBoot 2.7.0 新特性、Spring Boot 1.5.x新特性:动态修改日志级别、Spring Boot 2(一):Spring Boot 2.0新特性、Spring Boot 2.0 新特性等更多相关知识的信息可以在本站进行查询。
本文标签: