Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.
Info

En construcción...

Tabla de contenidos


Siguiendo esta guía de migración: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide

La versión mínima de Spring Boot para Java 21 es 3.2.

Se irá completando esta guía con las cosas que nos afecten.

Revisar versiones de dependencias y plugins

Revisar las dependencias de cada proyecto y ver que sean compatibles con spring boot 3.2.x y Java 21. Versiones que provee Spring Boot 3.0: https://docs.spring.io/spring-boot/docs/3.0.x/reference/html/dependency-versions.html#appendix.dependency-versions.properties.

Revisando el parent fundewebjs-api-parent, veo estas versiones:

Bloque de código
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<resource.delimiter>@</resource.delimiter>
<spring-boot.version>2.7.18</spring-boot.version>
<spring-cloud.version>2021.0.9</spring-cloud.version>
<spring-security.version>5.7.7</spring-security.version>
<fundewebjs-starter.version>1.0.4</fundewebjs-starter.version>
<fundewebjs-dependencies.version>[1.0.8,1.9.99]</fundewebjs-dependencies.version>
<sonar.qualitygate.wait>true</sonar.qualitygate.wait>
<jacoco.version>0.8.12</jacoco.version>
<hibernate.version>5.6.15.Final</hibernate.version>
<maven-antrun-plugin.version>3.0.0</maven-antrun-plugin.version>
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
<maven-clean-plugin.version>3.2.0</maven-clean-plugin.version>
<maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version>
<maven-dependency-plugin.version>3.3.0</maven-dependency-plugin.version>
<maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
<maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version>
<maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version>
<maven-help-plugin.version>3.2.0</maven-help-plugin.version>
<maven-install-plugin.version>2.5.2</maven-install-plugin.version>
<maven-invoker-plugin.version>3.2.2</maven-invoker-plugin.version>
<maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
<maven-javadoc-plugin.version>3.4.1</maven-javadoc-plugin.version>
<maven-resources-plugin.version>3.2.0</maven-resources-plugin.version>
<maven-shade-plugin.version>3.3.0</maven-shade-plugin.version>
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<maven-war-plugin.version>3.3.2</maven-war-plugin.version>

En fundewebjs-starter:

Bloque de código
<java.version>1.8</java.version>
<spring-cloud.version>2021.0.6</spring-cloud.version>
<springdoc.version>1.6.13</springdoc.version>
<jjwt.version>0.9.1</jjwt.version>
<jdbc-driver.version>12.2.0.1.0</jdbc-driver.version>
<fundewebjs-dependencies.version>[1.0.8,1.9.99]</fundewebjs-dependencies.version>

En fundewebjs-dependencies:

Bloque de código
<java.version>1.8</java.version>
<fdwjs.version>${project.version}</fdwjs.version>
<spring-boot.version>2.7.12</spring-boot.version>
<spring-cloud.version>2021.0.6</spring-cloud.version>
<spring-security.version>5.2.4.RELEASE</spring-security.version>
<jjwt.version>0.9.1</jjwt.version>
<lombok.version>1.18.12</lombok.version>
<commons-io.version>2.6</commons-io.version>
<micrometer.version>1.9.8</micrometer.version>
<commons.lang3.version>3.12.0</commons.lang3.version>
<log4j2.version>2.17.2</log4j2.version>
<jul2slf4j.version>1.7.35</jul2slf4j.version>
<hibernate-validator.version>5.1.0.Final</hibernate-validator.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<encoding>UTF-8</encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

De estas versiones, habrá que actualizar las siguientes:

Info

Pendiente de revisar todas las versiones y actualizaciones necesarias

Revisar Deprecations

Revisar qué clases, métodos y properties han quedado deprecated.

Para las properties que se han quitado o renombrado, se puede añadir la siguiente dependencia:

Bloque de código
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-properties-migrator</artifactId>
	<scope>runtime</scope>
</dependency>

Esta imprimirá un diagnóstico al inicio y migrará temporalmente las properties en tiempo de ejecución por ti. Esto es, lo usaremos para ver el diagnóstico si tenemos properties deprecated, pero no lo utilizaremos como parche.

Formato de fechas en log

El formato por defecto de las fechas y horas de Log4j2 ha cambiado para seguir el estándar ISO-8601. Se ha incluido una T separando fecha y hora en lugar de un espacio: yyyy-MM-dd’T’HH:mm:ss.SSSXXX. Ver si esto afecta o rompe algo en nuestros logs en lagar.

Match de URLs

Antes, con una url definida como "/hola/mundo", se cogerían peticiones tanto a /hola/mundo como a /hola/mundo/. Ahora, para coger la barra final, habrá que indicarlo explícitamente, por ejemplo:

Bloque de código
languagejava
@GetMapping("/hola/mundo", "/hola/mundo/")

Esto sólo afectará en el caso de que se estén haciendo llamadas con la barra al final cuando no está definido así. Por lo tanto, hay que revisar en el portal-ui las rutas a las que se llaman, y si encontramos alguna con barra al final, comprobar cómo está definida en la api.

Actuator

En la guía de migración indica estos cambios en el actuator. Como esto no lo controlo, pongo aquí un panatallazo de lo que se indica para revisarlo más adelante.