Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Supporto Spring in Quarkus

Analizziamo un esempio di utilizzo di Spring Boot all’interno di Quarkus realizzando un'applicazione per la conversione tra euro e dollaro
Analizziamo un esempio di utilizzo di Spring Boot all’interno di Quarkus realizzando un'applicazione per la conversione tra euro e dollaro
Link copiato negli appunti

In questo articolo vedremo un esempio di utilizzo di Spring Boot all'interno di Quarkus. Il supporto a Spring Boot da parte dei realizzatori di Quarkus non deve essere visto come un tentativo di integrazione completa di Spring, infatti la compatibilità fornita è posta ad un livello tale da rendere naturale la migrazione di un'applicazione Spring Boot verso la sua versione Quarkus.

Le motivazioni che sono alla base di uno spostamento da Spring Boot a Quarkus risiedono essenzialmente nella natura stessa di Quarkus: una piattaforma innovativa per la realizzazione di container Linux e microservizi Java Kubernetes-Native con ridotto utilizzo di memoria e tempi di avvio rapidi.

Quando compilata in modalità nativa, un'applicazione Quarkus può avviarsi in un tempo T inferiore ai 0.0015 secondi. In modalità JVM un'applicazione Quarkus occupa circa la metà della memoria occupata dalla stessa applicazione realizzata con Spring, avviandosi in un tempo T sempre pari a circa la metà del tempo richiesto dall'equivalente applicazione Spring.

Si tratta di valori indicativi ma che danno sicuramente l'idea delle potenzialità di questo framework.

Spring Web Api

Utilizzando l'IDE Intellij ed il plug-in Quarkus, vediamo come creare una semplice applicazione Spring Boot utilizzando l'estensione Spring Web Api. Creiamo un nuovo progetto Quarkus con impostazioni di default come visto nel precedente articolo. Definiamo successivamente i parametri Maven del progetto come illustrato nella seguente figura:

Progetto Quarkus

Figura 1. Progetto Quarkus

nella successiva schermata selezioniamo "Compatibility" e applichiamo un check in corrispondenza di "Quarkus Extension for Spring Web Api":

Quarkus compatibility

Figura 2. Quarkus compatibility

Attendiamo quindi il completamento della creazione del progetto.

Il codice Spring Boot

L'applicazione che andiamo a realizzare, è un semplice servizio REST che consente la conversione di un valuta in euro nel corrispondente valore in dollari. Definiamo una classe controller, nel percorso Java del progetto Maven, con il seguente codice al suo interno:

package it.html.spring.web;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestParam;
@RestController
@RequestMapping("/springweb/eurodollar")
public class EuroDollarController {
	@GetMapping("/conversion")
	public Conversion conversion(@RequestParam(value = "euro")
												 float euro) {
			return new Conversion(euro * 1.19f, euro);
	}
	public static class Conversion {
		private float euro;
		private float dollar;
		public Conversion(float dollar, float euro) {
			this.euro = euro;
			this.dollar = dollar;
		}
		public void setEuro(float euro) {
			this.euro = euro;
		}
		public float getDollar() {
			return dollar;
		}
	}
}

ed un'ulteriore classe per il test del servizio all'interno del percorso test del progetto:

package it.html.spring.web;
import io.quarkus.test.junit.QuarkusTest;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.CoreMatchers.is;
	@QuarkusTest
	public class EuroDollarTest {
		@Test
		public void testEuroDollarEndpoint() {
			given()
				.when().get("/springweb/eurodollar/conversion?euro=2.5")
				.then()
				.statusCode(200)
				.body(is("{\"dollar\":2.9750001}"));
	}
}

osservando con attenzione le classi realizzate notiamo l'utilizzo delle API Spring Boot nella prima classe e quelle di Quarkus nella classe di test. Realizziamo quindi un'applicazione Spring all'interno di Quarkus che testiamo attraverso le Quarkus API.

Avvio e test dell'applicazione

Per avviare l'applicazione procediamo come illustrato nel primo articolo. Nella sezione "Maven" di Intellij eseguiamo "quarkus:dev". Il risultato è l'avvio dell'applicazione Quarkus:

Quarkus avvio

Figura 3. Quarkus avvio

Nel caso di problemi di rilevazione di dipendenze da parte di Intellij si deve provare ad eseguire il comando Maven

mvn -U idea:idea

dal terminale Intellij per forzare il download delle dipendenze necessarie. Per un test diretto apriamo il browser ed inseriamo il seguente URL:

http://localhost:8080/springweb/eurodollar/conversion?euro=2.5

il risultato dovrebbe essere rappresentato dalla seguente risposta REST:

Risposta REST

Figura 4. Risposta REST

Per eseguire i test Quarkus rappresentati dalla classe EuroDollarTest, selezioniamo la classe come mostrato nella seguente immagine e facciamo click sulla freccia verde di esecuzione:

Quarkus test

Figura 5. Quarkus test

Quarkus viene questa volta avviato sulla porta 8081 con successiva esecuzione del metodo di test testEuroDollarEndpoint().

Ti consigliamo anche