• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Spring Boot 3.x 系列1Spring Boot 3.0 版本新特性

武飞扬头像
云烟成雨TD
帮助1

有道无术,术尚可求,有术无道,止于术。

本系列Spring Boot版本:3.0.3

导读

本系列基于最新Spring Boot 3.x版本,由浅入深,从实战到源码分析,详细讲解各种Spring Boot 的使用技巧,适用于初学和进阶使用者。

因为是基于Spring Boot 3.x,所以会先讲解大家比较关注的3.0 新特性,初学者可以跳过前两篇相关内容。

本系列学习路线:
学新通

简介

GitHub地址
官方网站

简要发展史

Spring Boot可以快速简便的构建应用,在当前微服务"泛滥"的时代,已经成为开发人员必须掌握的一项技术😉😉😉。

Spring框架于2004年3月24日,发布了1.0正式版,它是由罗德·约翰逊创建的一个轻量级开源框架。

在此之前,开发一个企业应用项目是是比较复杂的,比如使用EJBSpring框架通过控制反转面向切面编程的思想进行更轻松的企业应用开发,取代了EJB臃肿、低效的开发模式。

Spring早期都基于XML配置,也是比较繁琐,后期实现了基于注解开发模式,逐渐成为了JAVA开发的首选框架,但是也并没有做到开箱即用,没有最大限度的减轻不必要的开发工作。

2013年,Pivotal团队开始研发Spring Boot,在原有Spring框架的基础进一步简化了Spring应用的初始搭建以及开发过程。于2014年4月正式推出了1.0版本,2018年3月发布 2.0版本,2022年11月发布 3.0版本。
学新通

核心功能

翻译一下官网给出的功能特性并简单解读:

1、Create stand-alone Spring applications

可以快速的创建一个独立的Spring 应用。相对于需要自己创建工程、引入依赖、添加配置等重复的开发工作,使用Spring Boot只需输入项目名、版本号等信息,就可以快速创建一个可以直接进行业务开发的工程。

2、Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)

内嵌TomcatJetty Undertow Web服务器,不再需要我们将程序打包成war包,手动部署到Web服务器中。

3、Provide opinionated ‘starter’ dependencies to simplify your build configuration

提供各种starter依赖包,简化构建配置。使用哪个框架,只需引入对应的starter包即可,无需再需要自己写配置类、加载类等。

4、Automatically configure Spring and 3rd party libraries whenever possible

自动配置Spring及第三方库,只需少量配置就能完成相应的功能,开箱即用。

5、Provide production-ready features such as metrics, health checks, and externalized configuration

提供生产级别的监控、健康检查及外部化配置。可以提供检测程序内存、硬盘、CPU等功能。

6、Absolutely no code generation and no requirement for XML configuration

没有代码生成,也不需要编写XML配置。不再使用繁琐的XML配置,使用基于注解的方式。

新特性

Spring Boot版本发布速度很快,而且从发布日期开始,基本都只支持维护一年时间。。。当发布新版本时,可以通过版本发布说明查看版本升级变化。

这里只简单介绍 3.0 新特性,具体用法后面会用代码详细解读。

JDK 版本要求(重点)

3.0需要Java 17作为最低版本。如果当前正在使用Java 8Java 11,在开发Spring Boot 3.0应用程序之前,需要升级JDK,对于Java 19也进行了测试并运行正常。

注:Java 17在最近几年会成为主流开发版本。

GraalVM 本地镜像支持(重点)

Spring Boot 3.x应用程序可以构建为GraalVM本地镜像,大幅度减少内存消耗,加快启动速度。

注: GraalVM技术虽然目前还不够成熟,但在将来以其高性能、低内存、启动快的优点,JAVA才能在云原生时代站位脚跟。

GraalVM 和 Native 构建工具版本要求

GraalVM 22.3或更高版本
Native Build Tools插件:0.9.17或更高版本

第三方库升级

此处只列举一些常用的。

Spring框架相关的库:

  • Spring Framework 6
  • Spring AMQP 3.0
  • Spring Security 6.0
  • Spring Data 2022.0

Java EE升级为Jakarta EE,尽可能选择Jakarta EE兼容的依赖项,包括:

  • Jakarta Activation 2.1
  • Jakarta JMS 3.1
  • Jakarta JSON 2.1
  • Jakarta JSON Bind 3.0

其他第三方库最新稳定版本:

  • Elasticsearch Client 8.5
  • Hibernate 6.1
  • Jackson 2.14
  • Logback 1.4
  • OkHttp 4.10
  • Tomcat 10

Log4j2 功能增强

更新Log4j2新功能:

  • 多环境支持

  • 环境属性查询

  • 系统属性

有关详细信息,请参阅官网

@ConstructorBinding改进

当使用@ConfigurationProperties注解进行属性绑定时,如果类只有一个构造器,则可以省略注解,不需要标注在构造器上。如果有多个构造函数,仍然需要使用@ConstructorBinding来告诉Spring Boot使用哪一个。

Micrometer 更新

Micrometer Spring Boot中集成的一个应用检测度量框架,Spring Boot 3.0支持Micrometer 1.10中引入的新观测API,并支持Micrometer TracingMicrometer OtlpMeterRegistry的自动配置。

Prometheus 支持

Prometheus 是一个开源的系统监视和警报工具,Spring Boot 3.0对其Exemplars进行自动配置,以及推送网关可以配置在关机时执行PUT

更灵活的 Spring Data JDBC自动配置

Spring Data JDBC所需的几个自动配置的bean现在是有条件的,可以通过定义相同类型的bean来替换。现在可以替换的bean类型如下:

  • org.springframework.data.jdbc.core.JdbcAggregateTemplate
  • org.springframework.data.jdbc.core.convert.DataAccessStrategy
  • org.springframework.data.jdbc.core.convert.JdbcConverter
  • org.springframework.data.jdbc.core.convert.JdbcCustomConversions
  • org.springframework.data.jdbc.core.mapping.JdbcMappingContext
  • org.springframework.data.relational.RelationalManagedTypes
  • org.springframework.data.relational.core.dialect.Dialect

Kafka 启用异步确认

一个新的配置属性spring.kafka.listener.async-acks,用于配置Kafka启用异步ack。该属性仅在spring.kafka.listener.async-mode配置为manual 或者manual-immediate时适用。

Elasticsearch Java 客户端

引入新的Elasticsearch Java客户端 自动配置,可以使用现有的spring.elasticsearch.*进行属性配置。

JdkClientHttpConnector 的自动配置

在缺少Reactor NettyJetty的反应式客户端和Apache HTTP客户端的情况下,JdkClientHttpConnector现在将自动配置。WebClientJDKHttpClient可以一起使用。

@SpringBootTest 支持 main 方法

@SpringBootTest 注解新增userMainMethod属性,配置为useMainMethod可以调用Spring Boot应用入口的main方法。

调整和改进

除了上面列出的更改外,还进行了一些小的调整和改进,包括:

  • 在应用程序启动期间不再记录主机名,有助于缩短启动时间的网络查找。
  • JDK中弃用JavaSecurityManager之后,对它的支持已被删除。
  • Spring FrameworkCommonsMultipartResolver的支持在Spring Framework 6中被删除。
  • spring.mvc.ignore-default-model-on-redirect配置已被弃用,以与上游的Spring Framework更改保持一致。
  • WebJars资源处理程序路径模式可以使用spring.mvc.webjars-path-pattern或者spring.webflux.webjars-path-pattern来配置。
  • 可以使用server.tomcat.remoteip.trusted-proxies配置Tomcat远程IP信任代理。
  • 可以通过定义ValidationConfigurationCustomizer 来定制Validation配置。
  • Log4j2Log4jBridgeHandler现在用于将基于JUL的日志路由到Log4j2,而不是通过SLF4J
  • 实现MeterBinder接口的Bean现在仅在所有单例Bean初始化后绑定到容器中。
  • BraveOpenTelemetrySpanCustomizer 现在已自动配置。
  • Micrometer 中的JvmCompilationMetrics现在已自动配置。
  • DiskSpaceHealthIndicator现在在其日志消息中包含其路径及其运行状况详细信息。
  • DataSourceBuilder现在可以从包装的DataSource派生。
  • 可以使用spring.data.mongodb.additional-hostsMongoDB配置多个主机和其他主机属性。
  • ElasticsearchsocketKeepAlive属性可以使用spring.elasticsearch.socket-keep-alive属性进行配置。
  • 当使用spring-rabbit-stream时,RabbitStreamTemplateEnvironment将自动配置,无论spring.rabbitmq.listener.type 是否配置为stream
  • 可以使用spring.kafka.admin.modify-topic-configs属性修改现有的Kafka Topic
  • WebDriverScopeWebDriverTestExecutionListener已公开,以便于在自定义测试设置中使用WebDriver

过时

  • @ConstructorBinding已从org.springframework.boot.context.properties移动到org.springframework.boot.context.properties.bind包下
  • 已弃用基于JsonMixinModule扫描的构造函数。
  • ClientHttpRequestFactorySupplier应替换为ClientHttpRequestFactory
  • Cookiecomment属性不再受支持。
  • RestTemplateExchangeTagsProviderWebClientExchangeTagsPProviderWebFluxTagsProvideWebMvcTagsProvander和相关类已替换为ObservationConvention匹配的类。
  • HealthContributor @Configuration基础类上的无参数构造函数已被弃用。
  • DefaultTestExecutionListenersPostProcessorSpringBootDependencyInjectionTestExecution监听器已被弃用,取而代之的是Spring FrameworkApplicationContextFailureProcessor
  • 属性management.metrics.export<product>已过时,使用 management.<product>.metrics.export替换。
  • management.prometheus.metrics.export.pushgateway.shutdown-operation建议配置为post
  • @AutoConfigureMetrics已过时,使用@AutoConfigureObservabilit替换。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkkkie
系列文章
更多 icon
同类精品
更多 icon
继续加载