Spring Boot 3.0

Spring Boot3.0发布了, 新特征如下:

Java 17基线和Java 19支持

Spring Boot 3.0需要Java 17作为最低版本。如果您当前正在使用Java 8或Java 11,则在开发Spring Boot 3.0应用程序之前,需要升级JDK。 Spring Boot 3.0也运行良好,已在JDK 19上进行了测试。 GraalVM Baseline and Native Build Tools Spring Boot需要Graal 22.3或更高版本和Native Build Tools插件0.9.17或更高版本

第三方库升级

Spring Boot 3.0基于并需要Spring Framework 6。您可能想了解Spring Framework 6.0中提供的新功能。 在此版本中升级的其他Spring项目包括:

Spring AMQP 3.0
Spring Batch 5.0
Spring Data 2022.0
Spring GraphQL 1.1
Spring HATEOAS 2.0
Spring Integration 6.0
Spring Kafka 3.0
Spring LDAP 3.0
Spring REST Docs 3.0
Spring Retry 2.0
Spring Security 6.0
Spring Session 3.0
Spring WS 4.0。

Spring Boot 3.0已从Java EE迁移到Jakarta EE API,用于所有依赖项。尽可能选择Jakarta EE 10兼容依赖项,包括:

Jakarta Activation 2.1
Jakarta JMS 3.1
Jakarta JSON 2.1
Jakarta JSON Bind 3.0
Jakarta Mail 2.1
Jakarta Persistence 3.1
Jakarta Servlet 6.0
Jakarta Servlet JSP JSTL 3.0
Jakarta Transaction 2.0
Jakarta Validate 3.0
Jakarta WebSocket 2.1
Jakarta WS RS 3.1
Jakarta XML SOAP 3.0
Jakarta XML WS 4.0

我们还尽可能升级到第三方jar的最新稳定版本。这里一些值得注意的依赖关系升级包括:

Couchbase client 3.4
Ehcache 3.10
Elasticsearch client 8.5
Flyway 9
Groovy 4.0
Hibernate 6.1
Hibernate Validator 8.0
Jackson 2.14
Jersey 3.1
Jetty 11
jOOQ 3.16
Kotlin 1.7.20
Liquibase 4.13
Lettuce 6.2
Log4j 2.18
Logback 1.4
Micrometer 1.10
Micrometer Tracing 1.0
Neo4j Java Driver 5.2
Netty 4.1.77 Final
OkHttp 4.10
R2DBC 1.0
Reactor 2022.0
SLF4J 2.0
SnakeYAML 1.32
Tomcat 10
Thymeleaf 3.1.0.M2
Undertow 2.2.20.Final

GraalVM Native Image Support

Spring Boot 3.0应用程序现在可以转换为GraalVM本地映像,这可以提供显著的内存和启动性能改进。支持GraalVM Native Images是整个Spring产品组合中的一项主要工程工作。 要开始使用GraalVM本机映像,请参阅更新的Spring Boot参考文档。

Log4j2增强功能

Log4j2支持已更新为提供以下功能的新扩展:

特定于配置文件的配置

环境属性查找

改进的@ConstructorBinding检测

当使用构造函数绑定的@ConfigurationProperties时,如果类具有单个参数化构造函数,则不再需要@ConstructorBinding注释。如果您有多个构造函数,您仍然需要使用@ConstructorBinding来告诉Spring Boot使用哪一个。

对于大多数用户,这个更新的逻辑将允许更简单的@ConfigurationProperties类。但是,如果您有一个@ConfigurationProperties,并且希望将bean注入构造函数而不是绑定它,那么现在需要添加一个@Autowired注释。

Micrometer 更新

Micrometer Observation API的自动配置 Spring Boot 3.0支持Micrometer 1.10中引入的新观测API。新的ObservationRegistry接口可用于创建观测,该接口为度量和Tracing 提供了一个API。Spring Boot现在为您自动配置ObservationRegistry的一个实例。

如果 micrometer-core 在类路径上,则在ObservationRegistry上注册DefaultMeterObservationHandler,这意味着每个停止的Observation都会导致计时器。ObservationPredicate、GlobalObservationConvention和ObservationHandler在ObservationRegistry上自动注册。如果需要,可以使用ObservationRegistryCustomizer进一步自定义Observation注册表。

Micrometer Tracing 的自动配置

Spring Boot现在为您自动配置Micrometer Tracing 。这包括对Brave、OpenTelemetry、Zipkin和Wavefront的支持。

使用Micrometer 观测API时,完成观测将导致向Zipkin或Wavefront报告跨度。可以通过管理的属性控制Tracing 。Tracing 。Zipkin可以使用management.zip来配置。Tracing ,而wavefront使用management.wavefront。

Micrometer OtlpMeterRegistry的自动配置

OtlpMeterRegistry现在在io时自动配置。Micrometer :Micrometer 注册表otlp位于类路径上。可以使用management.otlp.metrics.export.*配置仪表注册表属性。

Prometheus 支持

Prometheus示例的自动配置

当有一个Micrometer Tracing Tracing bean并且Prometheus在类路径上时,SpanContextSupplier现在是自动配置的。该供应商通过将当前Tracing ID和跨度ID提供给普罗米修斯,将度量链接到Tracing 。

关闭时向Prometheus Push Gateway进行PUT推送网关可以配置为在关机时执行PUT。为此,请设置management.prometheus.metrics.export.pushgateway。关闭操作。此外,现有的推送设置已被弃用,现在应改用post。

更灵活的Spring Data JDBC自动配置

SpringDataJDBC的自动配置现在更加灵活。SpringDataJDBC所需的几个自动配置的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

使用Apache Kafka启用异步确认

一个新的配置属性spring.kafkalistener。添加了用于使用Kafka启用异步ack的异步ack。要启用异步确认,请将属性设置为true。该属性仅在spring.kafka侦听器时适用。异步模式设置为手动或手动立即。

Elasticsearch Java客户端

新的Elasticsearch Java Client的自动配置已经引入。它可以使用现有的spring.elasticsearch进行配置*配置属性。

JdkClientHttpConnector的自动配置

在缺少Reactor Netty、Jetty的反应式客户端和Apache HTTP客户端的情况下,JdkClientHttpConnector现在将自动配置。这允许WebClient与JDK的HttpClient一起使用。 @SpringBootTest与主要方法 @SpringBootTest注释现在可以使用任何发现的@SpringBootConfiguration类的main(如果可用)。这意味着您的主方法执行的任何自定义SpringApplication配置现在都可以通过测试来获取。

要使用测试的主方法,请将@SpringBootTest的useMainMethod属性设置为useMainMethod。始终或使用MainMethod.WHEN_AVAILABLE。

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

  • 在应用程序启动期间不再记录主机名。这防止了有助于缩短启动时间的网络查找。
  • 在JDK中弃用Java的SecurityManager之后,对它的支持已被删除。
  • 对Spring Framework的CommonsMultipartResolver的支持在Spring Framework 6中删除后已被删除。
  • 忽略重定向时的默认模型已被弃用,以与上游的Spring Framework更改保持一致。
  • WebJars资源处理程序路径模式可以使用spring.mvc自定义。webjars路径模式或spring.webflux.webjars-路径模式。
  • 可以使用server.Tomcat.remoteip.Trusted-proxys配置Tomcat远程IP阀的受信任代理。
  • 可以通过定义ValidationConfigurationCustomizer Bean来定制Bean ValidationConfiguration。
  • Log4j2的Log4jBridgeHandler现在用于将基于JUL的日志路由到Log4j2,而不是通过SLF4J。
  • 实现MeterBinder接口的Bean现在仅在所有单例Bean初始化后绑定到仪表注册表。
  • Brave和OpenTelemetry的SpanCustomizer bean现在已自动配置。
  • Micrometer 的JvmCompilationMetrics现在已自动配置。
  • DiskSpaceHealthIndicator现在在其日志消息中包含其路径及其运行状况详细信息。
  • DataSourceBuilder现在可以从包装的DataSource派生。
  • 可以使用spring.data.MongoDB为MongoDB配置多个主机和其他主机属性。
  • Elasticsearch的socketKeepAlive属性可以使用spring.lasticsearch进行配置。套接字保持活动属性。
  • 当使用spring-rabbit流时,RabbitStreamTemplate和Environment现在将自动配置,无论是否为spring.rabbitmq.listener,类型为流。
  • 可以使用spring.Kafka.admin.modify-topic-configs修改现有的Kafka主题。
  • WebDriverScope和WebDriverTestExecutionListener已公开,以便于在自定义测试设置中使用WebDriver。

Spring Boot 3.0中的弃用

  • @ConstructorBinding已从org.springframework.boot.context中重新定位。properties包到org.springframework.boot.context.properties.bind。
  • 已弃用基于JsonMixinModule扫描的构造函数。
  • ClientHttpRequestFactorySupplier应替换为ClientHttpRequestFactory。
  • Cookie注释属性不再受支持。
  • RestTemplateExchangeTagsProvider、WebClientExchangeTagsPProvider、WebFluxTagsProvide、WebMvcTagsProvander和相关类已替换为ObservationConvention等同物。
  • HealthContributor@Configuration基类上的无参数构造函数已被弃用。
  • DefaultTestExecutionListenersPostProcessor和SpringBootDependencyInjectionTestExecution监听器已被弃用,取而代之的是Spring Framework的ApplicationContextFailureProcessor。
  • 属性management.metrics.export<product>已弃用,替代品为管理。<product>.metrics.export。
  • management.prometheus.metrics.export.pushgateway的推送设置。有利于岗位的停机操作。
  • @AutoConfigureMetrics已被弃用,转而支持@AutoConfigureObservability。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值