Spring Rooのクイックガイド

Spring Rooのクイックガイド

1. 概要

Spring Rooは、Rapid Application Development(RAD)ツールであり、Spring Webアプリケーションと新しいSpringテクノロジーに焦点を当てた高速で即時の結果を提供することを目的としています。 これにより、使いやすいコマンドでSpringアプリケーションの定型コードとプロジェクト構造を生成できます。

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

ただし、簡単にするために、Roo Extensionを備えたSTS IDEを使用します。

2. SpringRooのインストール

2.1. 必要条件

このチュートリアルを実行するには、これらをインストールする必要があります。

2.2. インストール

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

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

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

mkdir example
cd example
roo quit

数秒後に表示されます:

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

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

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

重要:Spring Roo 2.0は1.xとの後方互換性がありません。

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

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

STSで、Install New Softwareに移動し、ブックマークをAvailable Software Sitesにインポートしましょう。 現在、ブックマークは%ROO_HOME%\confフォルダーにあります。 ブックマークをインポートしたら、rooを検索して、最新バージョンのSpring IDE Roo Supportをインストールできます。 最後に、STSを再起動するように求められます。

詳細で最新の手順については、いつでもSpring Roo Getting Startedのドキュメントを確認できます。

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

これで、もう一度「ウィンドウ」アプリケーションメニューに移動し、Show View > Roo Shell.を選択できます。

3. 最初のプロジェクト

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

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

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

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

project setup --topLevelPackage com.example --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に更新することです。

1.9

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

3.2. Roo Shell

今度は、Roo Shellに慣れるときです。 Spring Rooの主要なユーザーインターフェイスは、実際にはコマンドプロンプトです。

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

roo> h

help    hint

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

Roo Shellのもう1つの優れた機能は、context awarenessです。 たとえば、hintコマンドの出力は、前の入力に応じて変化します。

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

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によって提案されたものを確認できます。 これは非常に便利な機能です。

Let’s run the commands first、そして後でそれらを調べます:

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プロジェクトを右クリックして、Run As > Spring Boot Appを選択しましょう。

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

3.4. その他の機能

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

RooアノテーションにはSOURCEの保持ポリシーがあります。 これはthe annotations won’t be present in compiled class bytecodeを意味し、デプロイされたアプリケーションではRooへの依存関係はありません。

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

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

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

4. 結論

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

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

いつものように、議論を通して使用されるコードはover on GitHubで見つけることができます。