SpringBoot2.4新特性详解

      SpringBoot2.5新特性详解

      SpringBoot2.4新特性详解

      SpringBoot2.3新特性详解

      SpringBoot2.2新特性详解

1、解除默认加载bootstratp配置文件

升级到2.4之后,spring.cloud.bootstratp.enabled默认为false,不再支持自动读取bootstratp配置文件,需要加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
    <version>3.0.3</version>
</dependency>

如果依旧用2.4版本之前的逻辑,需要额外配置

spring.config.use-legacy-processing=true

2、配置数据项迁移指南

      Spring Boot 2.4 对文件application.propertiesapplication.yml文件的处理方式进行了彻底改革。更新的逻辑旨在简化和合理化加载外部配置的方式。它还使我们能够提供新功能,例如spring.config.import支持,但有些参数的组合形式却得到了限制,升级请谨慎。

      如果你的应用工程只有一个简单的 application.properties 或 application.yml 文件,则可以进行无缝升级到 Spring Boot 2.4.0。

      但是,如果你的配置较为复杂,比如说有指定 profile 的参数,或者有基于 profile 激活的参数,要使用新功能就需要进行一些更改。

      如果没有准备升级迁移,只是想升级一下springboot版本也可以使用之前的配置数据数据逻辑,则需要切换回旧模式,为此,您应该将该spring.config.use-legacy-processing属性设置为true该属性需要在 Spring 中设置Environment。最简单的方法通常是将其添加到jarapplication.propertiesapplication.yml内部。

      例如,你可以有一个src/main/resources/application.properties如下:

spring.config.use-legacy-processing =true

     如果想要升级2.4之后的新配置逻辑,如:

spring:
  profiles: "prod"

则替换为:

spring:
  config:
    activate:
      on-profile: "prod"

生产环境启动命令依旧不变:

$ java -jar app.jar --spring.profiles.active=prod

组合命令2.4之前

 

spring.profiles: "debug"
spring.profiles.include: "debugdb,debugcloud"

2.4组合命令之后:

spring:
  profiles:
    group:
      "debug": "debugdb,debugcloud"

3、移除了 JUnit 5’s Vintage 引擎

      Spring Boot 2.4.0 从 spring-boot-starter-test 中移除了 JUnit 5 Vintage 引擎,JUnit 5 可以通过 vintage 引擎来运行 JUnit 4 编写的测试用例,说白了就是兼容 JUnit 4 呗。如果你不想迁移测试用例到 JUnit 5 而继续使用 JUnit 4,添加以下 Maven 依赖即可:

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

4、配置文件属性获取新增@Name

@ConfigurationProperties(prefix = "sample")
@ConstructorBinding
public class SampleConfigurationProperties {

  private final String importValue;

  public SampleConfigurationProperties(@Name("import") String importValue) {
    this.importValue = importValue;
  }

}

5、Java15支持

Spring Boot 2.4 现在完全支持(并针对)Java 15。支持的最低版本仍然是 Java 8。

6、回滚配置属性

特定于 Logback 的日志属性已被重命名以反映它们是特定于 Logback 的事实。以前的名称已被弃用。

以下 Spring Boot 属性已更改:

logging.pattern.rolling-file-namelogging.logback.rollingpolicy.file-name-pattern

logging.file.clean-history-on-startlogging.logback.rollingpolicy.clean-history-on-start

logging.file.max-sizelogging.logback.rollingpolicy.max-file-size

logging.file.total-size-caplogging.logback.rollingpolicy.total-size-cap

logging.file.max-historylogging.logback.rollingpolicy.max-history

与它们映射到的系统环境属性一样:

ROLLING_FILE_NAME_PATTERNLOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN

LOG_FILE_CLEAN_HISTORY_ON_STARTLOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START

LOG_FILE_MAX_SIZELOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE

LOG_FILE_TOTAL_SIZE_CAPLOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP

LOG_FILE_MAX_HISTORYLOGBACK_ROLLINGPOLICY_MAX_HISTORY

7、默认Servlet注册

      Spring Boot 2.4 将不再注册DefaultServlet您的 servlet 容器提供的。在大多数应用程序中,它不被使用,因为 Spring MVCDispatcherServlet是唯一需要的 servlet。 

      如果您发现仍然需要默认的 servlet server.servlet.register-default-servlettrue则可以设置为。

8、默认情况下,HTTP跟踪不再包含cookie标头

    CookieSet-Cookie默认情况下,请求标头和响应标头不再包含在 HTTP 跟踪中。要恢复 Spring Boot 2.3 
的行为,请设置management.trace.http.include为cookies, errors, request-headers, response-headers

9、Docker支持升级

当使用 Spring Boot 构建时,可以为构建器或者运行镜像使用私有授权的 Docker 私有注册中心,支持用户名/密码认证以及基于 Token 机制认证。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章