Kurzanleitung zu Spring Roo

1. Übersicht

Spring Roo ist ein RAD-Tool (Rapid Application Development), das schnelle und sofortige Ergebnisse liefert und sich auf Spring-Webanwendungen und neuere Spring-Technologien konzentriert. Es ermöglicht uns, mit einfach zu verwendenden Befehlen Code und Projektstruktur für Spring-Anwendungen zu generieren.

Roo kann als eigenständige Anwendung verwendet werden, die über die Befehlszeile des Betriebssystems ausgeführt wird. Es ist nicht erforderlich, Eclipse, Spring Tool Suite (STS) oder eine andere IDE zu verwenden. Tatsächlich können wir jeden Texteditor verwenden, um Code zu schreiben!

Der Einfachheit halber verwenden wir jedoch STS IDE mit der Roo-Erweiterung.

2. Spring Roo installieren

2.1. Bedarf

Um diesem Tutorial zu folgen, müssen diese installiert sein:

  1. Java JDK 8
  2. STS
  3. Frühlings-Roo

2.2. Installation

Sobald wir Java JDK und STS heruntergeladen und installiert haben, müssen wir Spring Roo entpacken und dem Systempfad hinzufügen.

Erstellen wir die Umgebungsvariable ROO_HOME und fügen dem Pfad % ROO_HOME% \ bin hinzu .

Um zu überprüfen, ob Roo korrekt installiert ist, können wir die Befehlszeile öffnen und folgende Befehle ausführen:

mkdir baeldung cd baeldung roo quit

Nach ein paar Sekunden werden wir sehen:

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

Roo ist installiert und funktioniert. Bitte beachten Sie, dass die Spring Roo-Version variieren kann und die Schritte und Anweisungen von der tatsächlich verwendeten Version abhängen können.

Wichtig: Spring Roo 2.0 ist nicht abwärtskompatibel mit 1.x.

2.3. Hinzufügen und Konfigurieren der STS-Erweiterung

STS unterstützt die Entwicklung von Spring-Anwendungen und enthält sofort einsatzbereite Erweiterungen. Die Spring Roo-Erweiterung ist jedoch nicht enthalten. Daher müssen wir es manuell hinzufügen.

In STS gehen wir zu Neue Software installieren und Lesezeichen in verfügbare Software-Sites importieren . Derzeit befinden sich Lesezeichen im Ordner % ROO_HOME% \ conf . Sobald wir die Lesezeichen importiert haben, können wir nach einfachem Roo suchen und die neueste Version des Spring IDE Roo-Supports installieren . Am Ende werden wir aufgefordert, STS neu zu starten.

Detaillierte und aktuelle Schritte finden Sie jederzeit in der Dokumentation zu den ersten Schritten von Spring Roo.

Sobald wir Roo Support in STS installiert haben, müssen wir die Erweiterung einrichten. Es ist so einfach wie das Zeigen des Roo-Supports auf den Ordner % ROO_HOME% . Wiederum enthält Spring Roo Getting Started detaillierte Schritte dazu.

Jetzt können wir noch einmal zum Anwendungsmenü „Fenster“ gehen und Show View> Roo Shell auswählen .

3. Erstes Projekt

3.1. Einrichten eines Projekts in STS

Öffnen Sie in STS das Roo Shell- Fenster und klicken Sie auf das Symbol Neues Roo-Projekt erstellen . Dies öffnet ein New Roo Project- Fenster.

Wir werden das Projekt roo benennen und com.baeldung als unseren Paketnamen der obersten Ebene verwenden. Wir können alle anderen Standardwerte beibehalten und bis zum Ende fortfahren, um mit Roo ein neues Projekt zu erstellen.

In STS wird der folgende Befehl für uns ausgeführt:

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

Wie bereits erwähnt, benötigen wir keine IDE, und wir hätten diesen Befehl auch von Roo Shell aus ausführen können! Der Einfachheit halber verwenden wir integrierte Funktionen von STS.

Wenn wir folgenden Fehler erhalten:

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

Der einfachste Weg, dies zu beheben, besteht darin, die Datei pom.xml manuell zu bearbeiten und die Datei aspectj.plugin.version von 1.8 auf 1.9 zu aktualisieren :

1.9

Zu diesem Zeitpunkt sollte es keine Fehler im Projekt geben, und es werden einige automatisch generierte Dateien für uns vorhanden sein.

3.2. Roo Shell

Jetzt ist es Zeit, sich mit der Roo Shell vertraut zu machen. Die primäre Benutzeroberfläche von Spring Roo ist in der Tat die Eingabeaufforderung!

Kehren wir daher zum Roo Shell-Fenster zurück. Lassen Sie uns den ersten Befehl ausführen, indem Sie 'h' eingeben und STRG + LEERTASTE drücken:

roo> h help hint

Roo schlägt uns automatisch Befehle vor und vervollständigt sie automatisch. Wir können 'hi' eingeben, STRG + LEERTASTE drücken und Roo schlägt automatisch einen Hinweisbefehl vor .

Ein weiteres großartiges Merkmal von Roo Shell ist das Kontextbewusstsein . Beispielsweise ändert sich die Ausgabe des Hinweisbefehls abhängig von der vorherigen Eingabe.

Lassen Sie uns nun den Hinweisbefehl ausführen und sehen, was passiert:

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.

Es gibt uns die nächsten Schritte, die wir ausführen müssen. Fügen wir jetzt eine Datenbank hinzu:

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}]

In diesem Stadium müssen wir einige Befehle ausführen. Zwischen jedem von ihnen können wir immer einen Hinweisbefehl ausführen, um zu sehen, was von Roo vorgeschlagen wird. Dies ist eine sehr nützliche Funktion.

Lassen Sie uns zuerst die Befehle ausführen und sie anschließend durchgehen:

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

Wir sind jetzt bereit, unsere Anwendung auszuführen. Lassen Sie uns jedoch die Befehle zurückgehen, um zu sehen, was wir getan haben.

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.

Darüber hinaus kann das Framework einfach aus dem Projekt entfernt werden, um eine Lieferantenbindung zu vermeiden, indem Anmerkungen entfernt und AspectJ ITD in Standard-Java-Code übertragen werden.

4. Fazit

In diesem kurzen Beispiel haben wir Spring Roo in STS installiert und konfiguriert und ein kleines Projekt erstellt.

Wir haben Roo Shell zum Einrichten verwendet und mussten keine einzige Zeile des tatsächlichen Java-Codes schreiben! In wenigen Minuten konnten wir einen funktionsfähigen Anwendungsprototyp erhalten, und Roo kümmerte sich für uns um den gesamten Code der Boilerplate.

Wie immer ist der in der Diskussion verwendete Code auf GitHub zu finden.