您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
加快开机速度(这可能是最全的SpringBoot3新版本变化了)
现在,可以使用,属性加快开机速度(这可能是最全的SpringBoot3新版本变化了)
发布时间:2016-12-08加入收藏来源:互联网点击:
11月24号,Spring Boot 3.0 发布了第一个正式的 GA 版本,一起看看新版本到底有哪些变化。
2.7版本升级指南官方提供了一个从 2.7 版本升级到 3.0 的指南:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide,官方建议在升级到 Spring Boot 3.0 之前先升级到 Spring Boot 2.7。
新的变化基于Java17和支持Java19Spring Boot 3.0 使用 Java 17作为最低版本,如果你目前使用的是 Java 8或 Java 11,那么需要升级先升级 Jdk,并且新版本已通过 JDK 19 进行了测试。
GraalVM支持Spring Native 也是升级的一个重大特性,支持使用 GraalVM 将 Spring 的应用程序编译成本地可执行的镜像文件,可以显著提升启动速度、峰值性能以及减少内存使用。
关于 GraalVM 使用可以参考:https://docs.spring.io/spring-boot/docs/3.0.0-SNAPSHOT/reference/html/native-image.html#native-image
三方包升级Spring Boot 3.0 构建基于 Spring Framework 6 之上,需要使用 Spring Framework 6。
该版本中升级的其他 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.0Spring Session 2022.0Spring WS 4.0.Spring Boot 3.0 已经从 Java EE 升级为 JakartaEE API。尽可能选择 JakartaEE10 兼容的依赖:
Jakarta Activation 2.1Jakarta JMS 3.1Jakarta Json 2.1Jakarta JSON Bind 3.0Jakarta Mail 2.1Jakarta Persistence 3.1Jakarta Servlet 6.0Jakarta Servlet JSP JSTL 3.0Jakarta Transaction 2.0Jakarta Validation 3.0Jakarta Websocket 2.1Jakarta WS RS 3.1Jakarta XML SOAP 3.0Jakarta XML WS 4.0另外,还升级了第三方 jar 包的最新稳定版本,其中一些值得注意的依赖升级包括:
Couchbase Client 3.4Elasticsearch Client 8.5Flyway 9Groovy 4.0Hibernate 6.1Hibernate Validator 8.0Jackson 2.14Jersey 3.1Jetty 11jOOQ 3.16Kotlin 1.7.20Liquibase 4.13Lettuce 6.2Log4j 2.18Logback 1.4Micrometer 1.10Micrometer Tracing 1.0Neo4j Java Driver 5.2Netty 4.1.77.FinalOkHttp 4.10R2DBC 1.0Reactor 2022.0SLF4J 2.0SnakeYAML 1.32Tomcat 10Thymeleaf 3.1.0.M2Undertow 2.2.20.FinalLog4j2增强这次升级,包含了一些对 Log4j2 的扩展支持,具体如下,也可以参考官方文档:https://docs.spring.io/spring-boot/docs/3.0.0-SNAPSHOT/reference/html/features.html#features.logging.log4j2-extensions。
配置文件增强
比如下面针对不同环境的配置方式。
<SpringProfile name="staging"> <!-- configuration to be enabled when the "staging" profile is active --> </SpringProfile> <SpringProfile name="dev | staging"> <!-- configuration to be enabled when the "dev" or "staging" profiles are active --> </SpringProfile> <SpringProfile name="!production"> <!-- configuration to be enabled when the "production" profile is not active --> </SpringProfile>
Spring 环境属性增强
支持在 Log4j2配置中引用 Spring 环境中的属性,使用 Spring: 前缀。
<Properties> <Property name="applicationName">${spring:spring.application.name}</property></Properties>
系统属性增强
Log4j2现在支持更多可配置的 System.properties 。比如,可以使用 log4j2.skipJansi 系统属性来配置 Console Appender 是否在 Windows 上使用 Jansi 输出流。
在 Log4j2 初始化之后加载的所有System.properties都可以从 SpringEnvironment 拿到。比如上面的举例一样,可以把log4j2.skipJansi = false 配置到 application.properties 中。
@ConstructorBinding检测优化以前如果希望属性绑定到类中,我们通过使用@ConfigurationProperties和@ConstructorBinding注解可以做到。
新版本针对该注解做了优化,当使用构造函数绑定@ConfigurationProperties 时,如果类只有一个参数的构造函数,则不再需要@ConstructorBinding注解。
如果有多个构造函数,那么仍然需要使用@ConstructorBinding来告诉 Spring Boot 应该使用哪个构造函数。
Micrometer 升级Spring Boot 3.0 支持 Micrometer 1.10 中引入的新的 Observation API,新的 Observationregistry提供一个 API 就可以创建 metrics和 trace,新版本 SpringBoot 现在将会自动装配ObservationRegistry,并且可以使用ObservationRegistryCustomizer进一步定制化ObservationRegistry。
可以参考官方文档:https://docs.spring.io/spring-boot/docs/3.0.0-SNAPSHOT/reference/html/actuator.html#actuator.observability
Micrometer Tracing 自动装配SpringBoot 现在自动装配Micrometer Tracing ,包括对 Brave, OpenTelemetry, Zipkin 和 Wavefron 的支持。
另外,当引入io.micrometer:micrometer-registry-otlp包之后, OtlpMeterRegistry也会自动装配。
细节参考官方文档:https://docs.spring.io/spring-boot/docs/3.0.0-SNAPSHOT/reference/html/actuator.html#actuator.micrometer-tracing
Prometheus 支持如果存在 Prometheus 依赖和 Tracer Bean,将会自动装配SpanContextSupplier,SpanContextSupplier将会把 metrics 关联到 trace,因为它会把当前的 traceID 和 spanID 保存到 Prometheus 的 Example 中。
更灵活的Spring Data jdbc装配Spring Data JDBC的自动装配现在更加灵活,Spring Data JDBC 所需的几个自动装配的 Bean现在是有条件的,可以通过定义相同类型的Bean来替换,可以替换的Bean类型如下:
org.springframework.data.jdbc.core.JdbcAggregateTemplateorg.springframework.data.jdbc.core.convert.DataAccessStrategyorg.springframework.data.jdbc.core.convert.JdbcConverterorg.springframework.data.jdbc.core.convert.JdbcCustomConversionsorg.springframework.data.jdbc.core.mapping.JdbcMappingContextorg.springframework.data.relational.RelationalManagedTypesorg.springframework.data.relational.core.dialect.DialectKafka异步ACK支持现在可以通过设置spring.kafka.listener.async-acks=true来开启 Kafka 的异步 ACK,并且需要设置spring.kafka.listener.async-mode为manual or manual-immediate。
新的Elasticsearch JAVA客户端支持支持新版本的 ES JAVA 客户端自动装配,可以通过属性spring.elasticsearch.*来配置。
JdkClientHttpConnector 自动装配如果没有 Netty Reactor、Jetty reactive client 和 Apache HTTP client ,将自动装配JdkClientHttpConnector,这允许WebClient和 JDK 的HttpClient一起使用。
@SpringBootTest优化升级现在任何@SpringBootConfiguration中的main方法都可以使用@SpringBootTest注解,但是需要将@SpringBootTest的useMainMethod属性设置为UseMainMethod.ALWAYS 或者UseMainMethod.WHEN_AVAILABLE。
杂七杂八除了上面列出的改变之外,还有一些小的调整和优化,包括:
在应用程序启动时候不再记录Host Name,可以提高启动速度,缩短网络查找的耗时移除了对 SecurityManager 的支持。在Spring Framework6中移除CommonsMultipartResolver之后,对它的支持也被移除了。为了保持和 Spring6 版本一致,不再推荐使用spring.mvc.ignore-default-model-on-redirectWeb Jar 资源处理器 path pattern 可以使用参数spring.mvc.webjars-path-pattern 、 spring.webflux.webjars-path-pattern自定义Tomcat 远程 IP 阀的可信代理可以使用 server.Tomcat.Remoteip.trust-proxy 配置。可以通过定义 ValidationConfigurationCustomizer 来自定义 Bean 的校验。Log4j2的 Log4jBridgeHandler 现在用于将基于 JUL 的日志路由到 Log4j2,而不是通过 SLF4J 路由。实现 MeterBinder 接口的 Bean 现在只有在所有单例 Bean 初始化之后才绑定到meter registries。用于 Brave 和 OpenTelemetry 的 SpanCustomizer bean 现在会自动装配Micrometer 的 JvmCompilationMetrics 现在会自动装配。DiskSpaceHealthIndicator 现在其日志消息中包含路径及其健康详细信息。现在可以从包装的 DataSource 派生 DataSourceBuilder。现在可以使用 spring.data.MongoDB.additional-hosts 属性为 MongoDB 配置多个 host。可以使用 spring.elasticsearch.socket-keep-alive 属性配置 Elasticsearch 的 socketKeepAlive 属性。在使用 spring-rabbit-stream 时,RabbitStreamTemplate 和 Environment 现在将自动装配,无论 spring.rabbitmq.listener.type 是否是 stream。已有的 Kafka 主题可以使用 spring.kafka.admin.modify-topic-configs 进行修改。WebDriverScope 和 WebDriverTestExectionListener 现在是 public,以方便在自定义测试配置中使用 WebDriver。弃用功能ConstructorBinding 已经从 org.springframework.boot.context.properties 包修改为 org.springframework.boot.context.properties.bind。已不推荐使用基于 JsonMixinModule 扫描的构造函数。ClientHttpRequestFactorySupplier 应该替换为 ClientHttpRequestFactories。不再支持 Cookie 注释属性。RestTemplateExchangeTagsProvider, WebClientExchangeTagsProvider, WebFluxTagsProvider, WebMvcTagsProvider和相关类已经被ObservationConvention所取代。HealthContributor@Configuration 上的无参构造函数已被弃用。DefaultTestExecutionListenersPostProcessor 和 SpringBootDependencyInjectionTestExecutionListener 已被弃用,转而使用 Spring 框架的 ApplicationContextFailureProcessor。不推荐使用 management.metrics.export.<product>,推荐使用 management.<product>.metrics.export。management.prometheus.metrics.export.pushgateway.shutdown-operation支持 POST@AutoConfigureMetrics 已被弃用,推荐使用@AutoConfigureObservability。上一篇:暨是什么意思-(新生儿起名:书里清新俊逸的宝宝名,让他拥有非凡人生)
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |