Guida rapida a Spring Roo

1. Panoramica

Spring Roo è uno strumento RAD (Rapid Application Development) che mira a fornire risultati rapidi e immediati incentrati sulle applicazioni Web Spring e sulle nuove tecnologie Spring. Ci consente di generare codice boilerplate e struttura del progetto per applicazioni Spring con comandi semplici da usare.

Roo può essere utilizzato come applicazione autonoma in esecuzione dalla riga di comando del sistema operativo. Non è necessario utilizzare Eclipse, Spring Tool Suite (STS) o qualsiasi altro IDE; infatti, possiamo usare qualsiasi editor di testo per scrivere codice!

Tuttavia, per semplicità, useremo STS IDE con l'estensione Roo.

2. Installazione di Spring Roo

2.1. Requisiti

Per seguire questo tutorial, questi devono essere installati:

  1. Java JDK 8
  2. STS
  3. Spring Roo

2.2. Installazione

Dopo aver scaricato e installato Java JDK e STS, è necessario decomprimere Spring Roo e aggiungerlo al percorso di sistema.

Creiamo la variabile d'ambiente ROO_HOME e aggiungiamo % ROO_HOME% \ bin al percorso.

Per verificare che Roo sia installato correttamente, possiamo aprire la riga di comando ed eseguire i seguenti comandi:

mkdir baeldung cd baeldung roo quit

Dopo pochi secondi vedremo:

 _ ___ _ __ _ __(_)_ __ __ _ _ __ ___ ___ / __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \ \__ \ |_) | | | | | | | (_| | | | | (_) | (_) | |___/ .__/|_| |_|_| |_|\__, | |_| \___/ \___/ |_| |___/ 2.0.0.RC1 Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

Roo è installato e funziona. Tieni presente che la versione Spring Roo varierà e i passaggi e le istruzioni potrebbero dipendere dalla versione effettivamente utilizzata.

Importante: Spring Roo 2.0 non è retrocompatibile con 1.x.

2.3. Aggiunta e configurazione dell'estensione STS

Pronto all'uso, STS supporta lo sviluppo di applicazioni Spring e include estensioni pronte per l'uso. Tuttavia, l'estensione Spring Roo non è inclusa. Pertanto, dovremo aggiungerlo manualmente.

In STS andiamo su Installa nuovo software e importiamo i segnalibri nei siti software disponibili . Attualmente, i segnalibri si trovano nella cartella% ROO_HOME% \ conf . Una volta importati i segnalibri, possiamo cercare semplicemente roo e installare l'ultima versione di Spring IDE Roo Support . Alla fine, ci verrà chiesto di riavviare STS.

Per i passaggi dettagliati e aggiornati possiamo sempre andare a controllare la documentazione di Spring Roo Getting Started.

Dopo aver installato Roo Support in STS, è necessario configurare l'estensione. È facile come indirizzare Roo Support alla cartella % ROO_HOME% . Anche in questo caso, Spring Roo Getting Started fornisce passaggi dettagliati su come farlo.

Ora possiamo andare ancora una volta al menu dell'applicazione "Finestra" e selezionare Mostra vista> Roo Shell.

3. Primo progetto

3.1. Impostazione di un progetto in STS

In STS apriamo la finestra Roo Shell e facciamo clic sull'icona Crea un nuovo progetto Roo . Questo aprirà una finestra New Roo Project .

Chiameremo il progetto roo e useremo com.baeldung come nome del nostro pacchetto di primo livello. Possiamo lasciare tutti gli altri valori di default e procedere alla fine per creare un nuovo progetto usando Roo.

In STS questo eseguirà il seguente comando per noi:

project setup --topLevelPackage com.baeldung --projectName "roo" --java 8 --packaging JAR

Come già accennato, non abbiamo bisogno di un IDE e avremmo potuto eseguire quel comando da Roo Shell noi stessi! Per semplicità, utilizziamo le funzionalità integrate di STS.

Se otteniamo il seguente errore:

Could not calculate build plan: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.8 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.codehaus.mojo:aspectj-maven-plugin:jar:1.8

il modo più semplice per risolverlo è modificare manualmente il file pom.xml e aggiornare aspectj.plugin.version da 1.8 a 1.9 :

1.9

In questa fase, non dovrebbero esserci errori nel progetto e ci saranno alcuni file generati automaticamente per noi.

3.2. Roo Shell

Ora è il momento di familiarizzare con Roo Shell. L'interfaccia utente principale di Spring Roo è, infatti, il prompt dei comandi!

Pertanto, torniamo alla finestra di Roo Shell. In esso, eseguiamo il primo comando digitando "h" e premendo CTRL + SPAZIO:

roo> h help hint

Roo suggerirà automaticamente e completerà automaticamente i comandi per noi. Possiamo digitare "ciao", premere CTRL + SPAZIO e Roo suggerirà automaticamente il comando di suggerimento .

Un'altra grande caratteristica di Roo Shell è la consapevolezza del contesto . Ad esempio, l'output del comando suggerimento cambierà a seconda dell'input precedente.

Eseguiamo ora il comando suggerimento e vediamo cosa succede:

roo> hint Roo requires the installation of a persistence configuration. Type 'jpa setup' and then hit CTRL+SPACE. We suggest you type 'H' then CTRL+SPACE to complete "HIBERNATE". After the --provider, press CTRL+SPACE for database choices. For testing purposes, type (or CTRL+SPACE) HYPERSONIC_IN_MEMORY. If you press CTRL+SPACE again, you'll see there are no more options. As such, you're ready to press ENTER to execute the command. Once JPA is installed, type 'hint' and ENTER for the next suggestion.

Ci fornisce i passaggi successivi che dobbiamo eseguire. Aggiungiamo ora un database:

roo> jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY Created SRC_MAIN_RESOURCES\application.properties Updated SRC_MAIN_RESOURCES\application.properties Updated SRC_MAIN_RESOURCES\application-dev.properties Updated ROOT\pom.xml [added dependencies org.springframework.boot:spring-boot-starter-data-jpa:, org.springframework.boot:spring-boot-starter-jdbc:, org.hsqldb:hsqldb:; added property 'springlets.version' = '1.2.0.RC1'; added dependencies io.springlets:springlets-data-jpa:${springlets.version}, io.springlets:springlets-data-jpa:${springlets.version}; added dependencies io.springlets:springlets-data-commons:${springlets.version}, io.springlets:springlets-data-commons:${springlets.version}]

A questo punto, dovremo eseguire alcuni comandi. Tra ciascuno di essi, possiamo sempre eseguire il comando suggerimento per vedere cosa viene suggerito da Roo. Questa è una caratteristica molto utile.

Eseguiamo prima i comandi e li esamineremo in seguito:

roo> entity jpa --class ~.domain.Book field string --fieldName title --notNull field string --fieldName author --notNull field string --fieldName isbn --notNull repository jpa --entity ~.domain.Book service --all web mvc setup web mvc view setup --type THYMELEAF web mvc controller --entity ~.domain.Book --responseType THYMELEAF

Ora siamo pronti per eseguire la nostra applicazione. Tuttavia, torniamo indietro nei comandi per vedere cosa abbiamo fatto.

First, we created a new JPA persistent entity in the src/main/java folder. Next, we created three String fields in Book class, gave them a name and set to be not null.

After that, we have generated Spring Data repository for the specified entity and created a new service interface.

In the end, we included Spring MVC configuration, installed Thymeleaf and created a new controller that manages our entity. Because we have passed Thymeleaf as the response type, the generated methods and views will reflect this.

3.3. Running the Application

Let's refresh the project and right click on roo project and select Run As > Spring Boot App.

Once the application has started, we can open a web browser and go to //localhost:8080. Next, to Roo icon, we will see Book menu and underneath two options: Create Book and List Books. We can use this to add a book to our application and view the list of added books.

3.4. Other Features

When we open Book.java class file, we'll notice that the class is annotated with @Roo annotations. These were added by Roo Shell and are used to control and customize the content of AspectJ inter-type declaration (ITD) files. We can view the files in Package Explorer in STS by unselecting “Hide generated Spring Roo ITDs” filter in View Menu, or we can open the files directly from the file system.

Roo annotations have SOURCE retention policy. This means the annotations won't be present in compiled class bytecode, and there won't be any dependency to Roo in deployed applications.

Another, obviously missing part in the Book.java class are getters and setters. These are stored in separate AspectJ ITDs files, as already mentioned. Roo will actively maintain this boilerplate code for us. Therefore, changes to fields in any class will be automatically reflected in AspectJ ITDs as Roo is “monitoring” all changes – either done via Roo Shell or directly by a developer in IDE.

Roo will take care of the repetitive code like toString() or equals() methods too.

Inoltre, il framework può essere facilmente rimosso dal progetto, evitando il blocco del fornitore, rimuovendo le annotazioni e inserendo AspectJ ITD nel codice java standard.

4. Conclusione

In questo rapido esempio, siamo riusciti a installare e configurare Spring Roo in STS e abbiamo creato un piccolo progetto.

Abbiamo usato Roo Shell per configurarlo e non abbiamo avuto bisogno di scrivere una singola riga di codice Java effettivo! E siamo stati in grado di ottenere un prototipo di applicazione funzionante in pochi minuti e Roo si è preso cura di tutto il codice standard per noi.

Come sempre, il codice utilizzato durante la discussione può essere trovato su GitHub.