
Migrare una applicazione a Spring Boot 3
La nuova versione 3 di Spring Boot porta con sè una delle novità più attese: la compilazione di immagini native per uno specifico sistema operativo.
I vantaggi sono legati alla maggiore velocità in fase di avvio dell'applicazione e al minore impiego di memoria.
In questo articolo vediamo i passi necessari per migrare un'applicazione realizzata con una precedente versione.
Installazione GraalVM
Per la compilazione nativa occorre GraalVM con supporto per Java 17.
Nota: per la precisione è necessaria per l'esecuzione locale. In alternativa si può creare un'apposita immagine Docker o ricorrere a servizi di CI/CD.
L'installazione può essere effettuata semplicemente ricorrendo a SDKMan (vai al video) con
sdk install java 22.3.r17-grl
E' inoltre necessario installare su Linux le seguenti librerie per evitare errori in fase di compilazione.
sudo apt-get install build-essential libz-dev zlib1g-dev
Modifiche al codice sorgente
Le uniche modifiche (almeno per questo progetto di esempio che non utilizza alcun modulo aggiuntivo di Spring) riguardano il file pom.xml e più precisamente occorre aggiornare lo spring-boot-starter-parent pom alla versione 3.0.0
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
e la versione di Java alla 17
<properties>
<java.version>17</java.version>
</properties>
A questo punto per effettuare la build basta eseguire il comando
./mvnw -DskipTests -Pnative native:compile
sfruttando in nuovo profilo "native".
Il file eseguibile prodotto é disponibile nella cartella target e di default ha lo stesso nome dell'artifact indicato nel file pom.xml.
Nel codice di esempio disponibile su GitHub sono presenti due cartelle: before contiene l'applicazione Spring Boot 2.x mentre after quella aggiornata alla versione 3.0.
In questo modo è possibile visionare le semplici modifiche richieste dall'aggiornamento.
[VIDEO YOUTUBE]
[LINKS]
- Tutorial di Spring Boot
- Esercitazioni di Spring Boot
- Codice su GitHub
- Flashcards Anki per lo studio
- Libri consigliati