Appearance
common invest 2.4.X Release Notes
调整
Junit 4版本已弃用,内置更新至Junit 5。如继续使用 Juint 4,请自行引入包(不推荐)。- swagger-ui 已按照APISpec规范进行标识和调整
- 框架包更改
com.investoday.boot更改为com.investoday.bootframework. - 去除
com.investoday.boot包的限制,支持多包服务 - 支持
controller的path属性 SpringUtil类名 更改为SpringUtils
Upgrade
- knife4j-spring-ui
3.0.2 - Lombok
1.18.16 - Hutool Core
5.5.4 - guava
30.1-jre
Properties
aix.index-to-doc.enabled首页进入document文档,默认trueaix.common-invest.debug.enabled是否开启common-investdebug 模式。默认false已弃用aix.web.request.hello_controller.enabled
从 2.3.X 更新
依赖更新
spring-boot-starter-parent-x和common-invest根据版本依赖关系更新更新包路径
重新导入依赖 common-invest 包类的 com.investoday.boot 更改至 com.investoday.bootframework
更新SpringUtil(如有)
SpringUtil更改至SpringUtils,并重新导入包更新RestResult的引用和构建(如旧RestResult失效)
ComUtils.restResultHandler更换为IXRestUtils.restResultHandler, 并重新导入包更改 Applcation 类的包名(重要)
将
Application.class的位置移动至包com.investoday下,以便common-invest的能完成注册.同时修改pom.xml文件中的属性start.class的位置Get it. 你已经完成了更新.
Spring Boot 发行记录(部分)
版本控制方案变更
从2.4开始,Spring Boot将采用新的Spring版本控制方案-这意味着您应该将build.gradle/pom.xml文件中的Spring Boot版本从更新2.3.5.RELEASE为2.4.0。
删除了JUnit 5的Vintage Engine spring-boot-starter-test
如果您升级到Spring Boot 2.4并看到JUnit类的测试编译错误,例如org.junit.Test,这可能是因为已从中删除了JUnit 5的老式引擎spring-boot-starter-test。Vintage引擎允许用JUnit 5运行用JUnit 4编写的测试。如果您不想将测试迁移到JUnit 5,并希望继续使用JUnit 4,请在Vintage Engine上添加一个依赖项,如以下示例所示。对于Maven:
xml
<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><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>配置文件处理(应用程序属性和YAML文件)
Spring Boot 2.4改变了处理application.properties和application.yml文件的方式。如果只有简单文件application.properties或application.yml文件,则升级应该是无缝的。但是,如果您的设置较为复杂(具有配置文件特定的属性或配置文件激活属性),则要使用新功能,可能需要进行一些更改。
如果只需要Spring Boot 2.3兼容的逻辑,则可以在或文件中将spring.config.use-legacy-processing属性设置为true。
配置数据导入
如果文件或文件夹不存在,则通过spring.config.location和spring.config.import(在此版本中引入)指定的配置位置将不再静默失败。如果您要导入位置,但是如果找不到该位置,则不介意跳过该位置,现在应在其前面加上optional:。
例如,spring.config.location=optional:/etc/config/application.properties将从application.properties文件中导入文件(/etc/config/如果存在),而从文件中跳过文件(如果不存在)。
如果要将所有位置都视为可选位置,则可以spring.config.on-not-found=ignore在SpringApplication.setDefaultProperties(…)system / environment变量中或在其中设置。
嵌入式数据库检测
嵌入式数据库逻辑已经过改进,可以仅在内存中将数据库视为嵌入式数据库。如果将基于文件的持久性或服务器模式与H2,HSQL和Derby一起使用,则此更改有两个结果:
- 该
sa用户名不再设置。如果您依靠这种行为,则需要设置spring.datasource.username=sa配置。 - 由于不再被视为嵌入式数据库,因此不再需要在启动时对其进行初始化。您可以使用照常进行调整
spring.datasource.initialization-mode。
Logback配置属性
特定于Logback的日志记录属性已重命名,以反映它们特定于Logback的事实。以前的名称已被弃用。
以下Spring Boot属性已更改:
logging.pattern.rolling-file-name→logging.logback.rollingpolicy.file-name-patternlogging.file.clean-history-on-start→logging.logback.rollingpolicy.clean-history-on-startlogging.file.max-size→logging.logback.rollingpolicy.max-file-sizelogging.file.total-size-cap→logging.logback.rollingpolicy.total-size-caplogging.file.max-history→logging.logback.rollingpolicy.max-history
以及它们映射到的系统环境属性:
ROLLING_FILE_NAME_PATTERN→LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERNLOG_FILE_CLEAN_HISTORY_ON_START→LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_STARTLOG_FILE_MAX_SIZE→LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZELOG_FILE_TOTAL_SIZE_CAP→LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAPLOG_FILE_MAX_HISTORY→LOGBACK_ROLLINGPOLICY_MAX_HISTORY
默认Servlet注册
Spring Boot 2.4将不再注册DefaultServlet您的servlet容器提供的。在大多数应用程序中,因为Spring MVCDispatcherServlet是唯一需要的servlet ,所以没有使用它。
如果发现仍然需要默认的servlet server.servlet.register-default-servlet,true则可以设置为。
默认情况下,HTTP traces不再包含cookie标头
Cookie``Set-Cookie默认情况下,HTTP traces中不再包含请求标头和响应标头。要恢复Spring Boot 2.3的行为,请设置management.trace.http.include为cookies, errors, request-headers, response-headers。
Undertow的前置路径
默认情况下,转发请求时,Undertow保留原始请求URL。此版本覆盖了Undertow的默认设置,以符合Servlet规范。以前的暗潮默认行为可以通过设置属性恢复server.undertow.preserve-path-on-forward到true。
默认启用分层jar
此版本默认启用分层jar并包括layertools。这应该可以立即使用构建包来提高生成镜像的效率,并在制作customDockerfile时使您受益于该功能。
Redis缓存指标
如果您正在使用Redis缓存,现在可以通过Micrometer公开缓存统计信息。记录的度量标准包括放置,获取和删除以及命中/未命中的次数。还记录未决请求的数量和锁定等待时间。
要启用该功能,请设置spring.cache.redis.enable-statistics为true。
Web配置属性
添加了属性以支持使用Spring MVC或Spring WebFlux配置Web区域设置和资源位置。新属性是:
spring.web.localespring.web.locale-resolverspring.web.resources.*
添加了一个新属性以支持使用servlet或反应式Web堆栈配置执行器管理端点:
management.server.base-path
不赞成使用这些Spring MVC和servlet特定的属性,而支持支持任一Web堆栈的新属性:
spring.mvc.localespring.mvc.locale-resolverspring.resources.*management.server.servlet.context-path
以允许他们注册servlet和过滤器的方式注册@WebListeners
@WebListener现在,以可以自己注册Servlet和过滤器的方式注册Servlet类。
早期版本的Spring Boot使用调用注册了它们javax.servlet.Registration.Dynamic。这意味着将应用Servlet规范(4.4)的以下部分:
如果ServletContext传递给ServletContextListener的contextInitialized方法,其中ServletContextListener既未在web.xml或web-fragment.xml中声明,也未使用@WebListener进行注释,则必须为在ServletContext中定义的所有方法的编程配置Servlet,过滤器的方法抛出UnsupportedOperationException异常和听众。
从Spring Boot 2.4开始,我们不再使用动态注册,因此可以安全地调用event.getServletContext().addServlet(…)和event.getServletContext.addFilter(…)从ServletContextListener.contextInitialized方法中进行调用。
Spring Boot 2.4 中弃用
ConfigFileApplicationListener已不推荐使用ConfigDataEnvironmentPostProcessor。SpringApplicationBuilder和SpringApplication与contextClass相关的方法已被弃用,改为使用contextFactory。CloudFoundryVcapEnvironmentPostProcessor不建议使用某些方法来处理EnvironmentPostProcessor更新(这些方法应影响大多数用户)。- 在
BuildLog构建包支持类已经弃用了一些方法,并与提供更多细节的替代品代替它们。 LoggingSystemProperties不赞成使用logback常量,而建议使用LogbackLoggingSystemProperties。UndertowServletWebServerFactory的方法isEagerInitFilters/setEagerInitFilters已由isEagerFilterInit/替换setEagerFilterInit。- 从一些方法
ApplicationEnvironmentPreparedEvent,ApplicationStartingEvent并SpringApplicationRunListener已被弃用,以支持BootstrapContext。 - 在
BuildLog对buildpack支持已经更新,以支持更多的数据(大多数用户不会直接使用这个类)。 - 不赞成使用某些Spring MVC和Servlet特定的属性(请参见上面的Web配置属性部分)。
- 不推荐使用Spring Data Cassandra的健康指标,而推荐使用原始驱动程序的指标。
完整更新说明
-- 译文来自Google机器翻译。准确原文点击完整更新说明