In questo articolo vedremo come creare una semplice web application con codice Java, utilizzando Spring Boot come framework per lo sviluppo del back-end e dei servizi REST.
Che cos’è Spring Boot e la procedura di installazione
Spring Boot è un framework per lo sviluppo di applicazioni web basate su codice Java (precisamente su stack Java) che offre un ulteriore livello di astrazione rispetto all’utilizzo di Spring Framework. Soprattutto in termini di setup e configurazione del progetto e di gestione delle dipendenze. In questo modo, si ottiene una riduzione ulteriore dei tempi necessari per l’implementazione e la distribuzione delle nostre applicazioni.
Leggi anche Sistemi di virtualizzazione, i diversi approcci e i vantaggi
Spring Boot è provvisto di un suo ambiente di sviluppo dedicato chiamato “Spring Tool Suite” che è possibile scaricare dal sito https://spring.io/tools. Una volta effettuato il download, basta seguire la procedura di installazione.
Apri il programma e seleziona dal menù la voce “File” -> “New” ->”Other”-> “Spring Starter Project”. Poi, inserisci il nome del progetto, ad esempio “SpringBootAddlanceEx1” e le sue caratteristiche.
Nel passaggio successivo scegli quali moduli “starters” vuoi inizialmente aggiungere come dipendenze. In particolare, se vuoi che il tuo servizio risponda ad una semplice chiamata GET, includi nel progetto il modulo Web che aggiunge una serie di pacchetti “base” necessari per lo sviluppo di una web application basata su Spring (spring-web, spring-mvc, jackson, ecc).
Se hai seguito fino alla fine questo processo (peraltro già guidato), avrai creato creato lo scheletro di un’applicazione in codice Java con la struttura indicata in figura.
Come puoi vedere, nel progetto sono state create:
- La classe SpringBootAddlanceEx1Application.java che rappresenta il punto di ingresso della tua applicazione
- Le cartelle static e templates sotto al folder delle risorse src/main/resources
- Un file properties
Se apri la classe SpringBootAddlanceEx1Application.java vedrai che il suo contenuto è il seguente:
package info.alessandrotesta.esempi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootAddlanceEx1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootAddlanceEx1Application.class, args);
}
}
Spring Boot permette che le app utilizzino la configurazione automatica, la scansione dei componenti e siano in grado di definire una configurazione aggiuntiva nella loro “classe di applicazione”. È possibile utilizzare un’unica annotazione @SpringBootApplication per abilitare queste tre funzionalità, ovvero:
@EnableAutoConfiguration: abilita il meccanismo di configurazione automatica di Spring Boot
@ComponentScan: abilita la scansione @Component sul pacchetto in cui si trova l’applicazione
@Configurazione: consente di registrare bean extra nel contesto o importare classi di configurazione aggiuntive
Il file pom.xml generato dalla procedura contiene le dipendenze del modulo Web richiesto:
<groupId>info.alessandrotesta.esempi</groupId>
<artifactId>SpringBootAddlanceEx1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBootAddlanceEx1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Di seguito vedrai come il framework gestisce le chiamate statiche direttamente e come invece gestisce le chiamate attraverso un controller. Potrai quindi creare la tua risorsa statica, sarà sufficiente spostarti nel folder “static” e creare un nuovo file HTML che verrà chiamato “index.html” con una struttura minimale.
<html>
<head>
</head>
<body>
<h1>SpringBootAddlanceEx1</h1>
Esercizio n.1 chiamata statica
</body>
</html>
Questa in grassetto sarà la risposta statica del tuo servizio.
A questo punto sarai pronto per scrivere il tuo controller che posizionerai in un package chiamato “controllers” e che creerai all’interno del progetto. Avrà la struttura ereditata dal principale cioè: info.alessandrotesta.esempi.controllers. Questo il codice di HomeController.java:
package info.alessandrotesta.esempi.controllers;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeController {
@RequestMapping(“/”)
public String index() {
return “<h1>SpringBootAddlanceEx1</h1>\n” +
” Esercizio n.1 – chiamata controller”;
}
}
Adesso sei pronto per mandare in esecuzione il servizio. Clicca con il tasto destro del mouse sulla classe SpringBootAddlanceEx1Application che, come hai visto, rappresenta il punto di partenza della tua applicazione, seleziona “Run As” e poi “Spring Boot App”.
L’applicazione parte utilizzando il server Tomcat incluso da Spring Boot in esecuzione sulla sua porta di default, la 8080.
Potrai quindi aprire il browser e richiedere la risorsa statica scrivendo
http://localhost:8080/index.html
ed apparirà la pagina statica:
e poi provare la richiesta al controller all’indirizzo
http://localhost:8080/
ed apparirà la risposta del controller:
Ti trovi bene a programmare in codice Java? Ecco vantaggi e svantaggi del framework Spring Boot
I vantaggi
- Gestione delle dipendenze semplificata e senza conflitti di versione tramite i POM di avvio. Sarai in grado di configurare ed eseguire applicazioni Web e micro-servizi standalone in pochissimo tempo.
- Puoi semplicemente assemblare l’artefatto jar fornito con un server applicazioni Tomact, Jetty o Undertow incorporato e l’applicazione è pronta per partire.
- Nessuna configurazione basata su XML. Proprietà molto semplificate. I bean vengono inizializzati, configurati e cablati automaticamente.
- Spring Initializer fornisce un generatore di progetti per renderti produttivo con un certo stack tecnologico sin dall’inizio. È possibile creare un progetto scheletro con supporto Web, accesso ai dati (datastore relazionali e NoSQL), cloud o supporto di messaggistica.
Leggi anche Servizi cloud, cosa sono e perché servono
Gli svantaggi
- Aumento della dimensione binaria di distribuzione con dipendenze non utilizzate.
- Perdita del controllo diretto, difficoltà a seguire il flusso quando le chiamate entrano in fondo al framework.
- Spring Boot si adatta bene ai micro servizi. Gli artefatti di Spring Boot possono essere distribuiti direttamente nei contenitori Docker. In applicazioni di grandi dimensioni e monolitiche è meno adatto e soprattutto è importante tenere sotto controllo la moltitudine di componenti che vengono inclusi.
Articolo a cura di Alessandro Testa
0 commenti