1. 概要

Spring Rooは、SpringWebアプリケーションと新しいSpringテクノロジーに焦点を合わせた迅速かつ即時の結果を提供することを目的としたRapidApplication Development(RAD)ツールです。 これにより、使いやすいコマンドを使用して、Springアプリケーションのボイラープレートコードとプロジェクト構造を生成できます。

Rooは、オペレーティングシステムのコマンドラインから実行されるスタンドアロンアプリケーションとして使用できます。 Eclipse、Spring Tool Suite(STS)、またはその他のIDEを使用する必要はありません。 実際、任意のテキストエディタを使用してコードを記述できます。

ただし、簡単にするために、Roo拡張機能を備えたSTSIDEを使用します。

2. SpringRooのインストール

2.1. 要件

このチュートリアルに従うには、次のものをインストールする必要があります。

  1. Java JDK 8
  2. STS
  3. 春のルー

2.2. インストール

Java JDKとSTSをダウンロードしてインストールしたら、SpringRooを解凍してシステムパスに追加する必要があります。

ROO_HOME 環境変数を作成し、パスに%ROO_HOME%\binを追加しましょう。

Rooが正しくインストールされていることを確認するために、コマンドラインを開いて次のコマンドを実行できます。

mkdir baeldung
cd baeldung
roo quit

数秒後、次のように表示されます。

                _
 ___ _ __  _ __(_)_ __   __ _   _ __ ___   ___
/ __| '_ \| '__| | '_ \ / _` | | '__/ _ \ / _ \
\__ \ |_) | |  | | | | | (_| | | | | (_) | (_) |
|___/ .__/|_|  |_|_| |_|\__, | |_|  \___/ \___/
    |_|                 |___/          2.0.0.RC1

Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.

Rooがインストールされ、動作しています。 Spring Rooのバージョンはさまざまであり、手順と手順は実際に使用されているバージョンによって異なる場合があることに注意してください。

重要:SpringRoo2.0は1.xとの下位互換性がありません。

2.3. STS拡張機能の追加と構成

すぐに使用できるSTSは、Springアプリケーションの開発をサポートし、すぐに使用できる拡張機能を備えています。 ただし、SpringRoo拡張機能は含まれていません。 したがって、手動で追加する必要があります。

STSで、新しいソフトウェアのインストールに移動し、使用可能なソフトウェアサイトにブックマークをインポートしましょう。 現在、ブックマークは%ROO_HOME%\confフォルダーにあります。 ブックマークをインポートしたら、 roo を検索して、最新バージョンの Spring IDE RooSupportをインストールできます。 最後に、STSを再起動するように求められます。

詳細で最新の手順については、いつでも Spring Roo GettingStartedのドキュメントを確認してください。

Roo SupportをSTSにインストールしたら、拡張機能をセットアップする必要があります。 Rooサポートを%ROO_HOME%フォルダーにポイントするのと同じくらい簡単です。 繰り返しになりますが、 Spring Roo Getting Started には、その方法の詳細な手順が記載されています。

これで、もう一度「ウィンドウ」アプリケーションメニューに移動し、[表示]>[Rooシェル]を選択できます。

3. 最初のプロジェクト

3.1. STSでのプロジェクトの設定

STSで、 Roo Shell ウィンドウを開き、 Create New RooProjectアイコンをクリックします。 これにより、 New RooProjectウィンドウが開きます。

プロジェクトにrooという名前を付け、トップレベルのパッケージ名としてcom.baeldungを使用します。 他のすべてのデフォルト値をそのままにして、最後に進み、Rooを使用して新しいプロジェクトを作成できます。

STSでは、これにより次のコマンドが実行されます。

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

すでに述べたように、IDEは必要ありません。そのコマンドは、RooShellから自分で実行することもできます。 簡単にするために、STSの組み込み機能を使用しています。

次のエラーが発生した場合:

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

これを修正する最も簡単な方法は、 pom.xml ファイルを手動で編集し、aspectj.plugin.version1.8から1.9に更新することです。

<aspectj.plugin.version>1.9</aspectj.plugin.version>

この段階では、プロジェクトにエラーはないはずであり、自動生成されたファイルがいくつかあります。

3.2. Roo Shell

次に、RooShellに慣れます。 Spring Rooの主要なユーザーインターフェイスは、実際にはコマンドプロンプトです。

したがって、RooShellウィンドウに戻りましょう。 その中で、「h」と入力してCTRL + SPACEを押して、最初のコマンドを実行しましょう。

roo> h

help    hint

Rooは、コマンドを自動的に提案してオートコンプリートします。 ‘hi’と入力し、CTRL + SPACEを押すと、Rooはヒントコマンドを自動提案します。

Roo Shellのもう1つの優れた機能は、コンテキストアウェアネスです。 たとえば、ヒントコマンドの出力は、前の入力に応じて変化します。

ヒントコマンドを実行して、何が起こるか見てみましょう。

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.

それは私たちが実行する必要がある次のステップを私たちに与えます。 今すぐデータベースを追加しましょう:

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

この段階で、いくつかのコマンドを実行する必要があります。 それらのそれぞれの間で、いつでも hint コマンドを実行して、Rooによって提案されたものを確認できます。 これは非常に便利な機能です。

最初にコマンドを実行してみましょう、後でコマンドを実行します。

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

これで、アプリケーションを実行する準備が整いました。 ただし、コマンドをさかのぼって、実行した内容を確認しましょう。

まず、 src / main /javaフォルダーに新しいJPA永続エンティティを作成しました。 次に、Bookクラスに3つのStringフィールドを作成し、それらに名前を付けて、nullにならないように設定しました。

その後、指定したエンティティのSpring Dataリポジトリを生成し、新しいサービスインターフェイスを作成しました。

最後に、Spring MVC構成を含め、Thymeleafをインストールし、エンティティを管理する新しいコントローラーを作成しました。 応答タイプとしてThymeleafを渡したため、生成されたメソッドとビューはこれを反映します。

3.3. アプリケーションの実行

プロジェクトを更新して、 roo プロジェクトを右クリックし、実行>Spring Bootアプリを選択します。

アプリケーションが起動したら、Webブラウザーを開いて、 http:// localhost:8080にアクセスできます。 次に、Rooアイコンに、 Book メニューが表示され、 CreateBookListBooksの2つのオプションの下に表示されます。 これを使用して、アプリケーションに本を追加し、追加された本のリストを表示できます。

3.4. その他の機能

Book。javaクラスファイルを開くと、クラスに@Rooアノテーションが付けられていることがわかります。 これらはRooShellによって追加され、AspectJタイプ間宣言(ITD)ファイルのコンテンツを制御およびカスタマイズするために使用されます。 [表示]メニューの[生成されたSpringRooITDを非表示]フィルターの選択を解除して、STSのパッケージエクスプローラーでファイルを表示するか、ファイルシステムから直接ファイルを開くことができます。

Rooアノテーションには、SOURCE保持ポリシーがあります。 これは、アノテーションがコンパイルされたクラスバイトコードに存在せず、デプロイされたアプリケーションでRooに依存しないことを意味します。

Book.java クラスのもう1つの明らかに欠落している部分は、getterssettersです。 すでに述べたように、これらは別々のAspectJITDファイルに保存されます。 Rooは、この定型コードを積極的に維持してくれます。 したがって、Rooはすべての変更を「監視」しているため、クラスのフィールドへの変更は自動的にAspectJ ITDに反映されます。これは、Roo Shellを介して、またはIDEの開発者が直接行います。

Rooは、 toString()または equals()メソッドのような反復コードも処理します。

さらに、アノテーションを削除し、AspectJ ITDを標準のJavaコードにプッシュすることで、ベンダーロックインを回避して、フレームワークをプロジェクトから簡単に削除できます。

4. 結論

この簡単な例では、STSにSpring Rooをインストールして構成し、小さなプロジェクトを作成しました。

Roo Shellを使用してセットアップし、実際のJavaコードを1行も記述する必要はありませんでした。 そして、数分で動作するアプリケーションプロトタイプを取得することができ、Rooがすべてのボイラープレートコードを処理してくれました。

いつものように、ディスカッション全体で使用されるコードは、GitHubにあります。