Hello World con Spring Boot

Il framework Spring è stato lanciato come framework alternativo alla Java Enterprise Edition. Anziché utilizzare componenti come gli Enterprise JavaBeans con una struttura protocollare complessa, Spring ha proposto un approccio più semplice incentrato sull’iniezione delle dipendenze e sulla programmazione orientata agli aspetti (AOP) per ottenere funzionalità Enterprise dei componenti Java EE ma utilizzando semplici oggetti Java (POJO).
Il rovescio della medaglia è che anche se Spring è un framework facilmente estendibile, partendo da un core minimo, è piuttosto complesso in termini di configurazione.

In effetti, la maggior parte delle librerie Spring richiede una configurazione XML come cuscinetto tra le classi POJO e il componente vero e proprio. L’aggiunta di librerie di terze parti, come il middleware JBoss, richiede inoltre una specifica configurazione XML che può causare un forte rallentamento dello sviluppo. La maggior parte degli sviluppatori Spring ha finito col passare più tempo a modificare la configurazione piuttosto che scrivere funzionalità di business.
Spring Boot tuttavia ha cambiato questo modo di programmare.

Spring Boot è nato con la mission di semplificare lo sviluppo di applicazioni, lavorando sulle seguenti aree:

  • Autoconfigurazione: Spring Boot è in grado di fornire automaticamente una configurazione standard per tutte le funzionalità del framework Spring
  • Starters: Controllare le dipendenze con Spring Boot è davvero semplice! Occorre soltanto inserire lo starter appropriato nel vostro file di build (Maven o Gradle) e tutte le relative dipendenze verranno caricate automaticamente.
  • Una solida command-line: anche se non l’unico strumento, è possibile generare dei template di progetto in modo rapidissimo usando la potente command line di Spring Boot
  • Metriche: Spring Boot fornisce già gli strumenti, mediante la libreria Actuator, per poter eseguire il monitoring in produzione delle vostre applicazioni
  • Embedded Web Server: Con l’aggiunta di una semplice dipendenza, è possibile dotare la vostra applicazione del vostro Web server preferito (Tomcat, Jetty o Undertow)

Iniziare un progetto con Spring Boot

Un progetto Spring Boot è simile ad un normale progetto Spring ma con l’aggiunta degli starters nelle dipendenze e la sua autoconfigurazione. Di conseguenza, se vi è familiare lo sviluppo in Spring, vi sarà ancora più semplice passare a Spring Boot.
Ci sono due metodologie principali per creare un progetto con Spring Boot:

  • Installando la Spring Boot CLI
  • Usando la Web application Spring Initializr

In questo tutorial impareremo come creare una applicazione Hello World Spring Boot 2 di esempio usando la Spring Boot CLI.

Per poter utilizzare la CLI di Spring Boot la cosa più immediata è scaricarla dal repository: http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/

Ad esempio:

wget http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/2.1.0.RELEASE/spring-boot-cli-2.1.0.RELEASE-bin.zip

Fatto ciò, eseguire l’unzip:

unzip spring-boot-cli-2.1.0.RELEASE-bin.zip

Ecco la vostra Spring Boot home directory:

tree spring-2.1.0.RELEASE/
spring-2.1.0.RELEASE/
├── bin
│ ├── spring
│ └── spring.bat
├── INSTALL.txt
├── legal
│ └── open_source_licenses.txt
├── lib
│ └── spring-boot-cli-2.1.0.RELEASE.jar
├── LICENCE.txt
└── shell-completion
├── bash
│ └── spring
└── zsh
└── _spring

Vi consiglio di aggiungere la directory “bin” al vostro PATH di sistema, in modo da poter eseguire il comando “spring” da qualunque posizione.

E qui un esempio di una applicazione Web “Hello world” scritta in Groovy: helloworld.groovy:

@RestController class HelloWorldSpringBoot {
  @RequestMapping("/") String home() {
    "Hello World from Spring Boot!"
  }
}

Come potete notare Groovy è in grado di eseguire l’import dei packages e classes automaticamente, quindi non dovete usare un esplicito import come in Java! (a meno che non ci sia un conflitto tra più classi con lo stesso nome)

Per compilare ed eseguire l’applicazione, eseguire il seguente comando:

$ spring run helloworld.groovy

E’ possibile testare l’applicazione, richiedendo la pagina di root sulla porta di default (8080):

$ curl localhost:8080

E’ possible passare argomenti extra al comando, come ad esempio se volete avviare l’applicazione su una porta custom:

$ spring run helloworld.groovy -- --server.port=9000

Per settare i parametri della JVM è sufficiente utilizzare la variabile di ambiente JAVA_OPTS come nel seguente esempio:

$ JAVA_OPTS=-Xmx1024m spring run helloworld.groovy

In questo tutorial abbiamo imparato come installare la CLI di Spring Boot e costruire una primissima applicazione in Groovy che fornisce un semplice REST Controller.