Eclipse STSのSpringガイド
1. 概要
この記事では、Spring applicationsを開発するときに役立つEclipse Spring Tool Suite (STS)IDEの便利な機能のいくつかを説明します。
最初に、Eclipseでアプリケーションを構築する従来の方法と比較して、STSを使用する利点を示します。
その後、アプリケーションのブートストラップ方法、実行方法、依存関係の追加方法に焦点を当てます。 最後に、アプリケーション引数を追加して締めくくります。
2. STSの主な機能
STSは、Springアプリケーションの開発用にカスタマイズされたEclipseベースの開発環境です。
アプリケーションを実装、デバッグ、実行、デプロイするためのすぐに使用できる環境を提供します。 また、Pivotal tc Server、Pivotal Cloud Foundry、Git、Maven、AspectJの統合も含まれています。 STSは、最新のEclipseリリースに加えて追加として構築されます。
2.1. プロジェクト構成
STSは、ほとんどすべての最も一般的なJavaプロジェクト構造を理解しています。 構成ファイルを解析してから、定義されているbeans、依存関係、使用されている名前空間に関する詳細情報を表示し、さらに特定のステレオタイプの概要を抽出します。
2.2. STS機能の概要
Eclipse STSはプロジェクトを検証し、アプリケーションの迅速な修正を提供します。 たとえば、Spring Data JPAを使用する場合、IDEを使用してクエリメソッド名を検証できます(詳細はセクション6を参照)。
STSは、すべてのBeanメソッドとそれらの相互関係のグラフィカルビューも提供します。 メニューwindow、show view、およびSpringでそれぞれ使用できるビューを調べて、STSに付属のグラフィカルエディターを詳しく調べたい場合があります。
STSは、Springアプリケーションのみに限定されないその他の追加の便利な機能も提供します。 読者は、hereにある機能の完全なリストを確認することをお勧めします。
3. Springアプリケーションの作成
簡単なアプリケーションをブートストラップすることから始めましょう。 STSがない場合、Springアプリケーションは通常、Spring Initializer WebサイトまたはSpring Boot CLIを使用して作成されます。 これは、STSのダッシュボードからCreate Spring Starter Projectをクリックすることで簡略化できます。
New Spring Starter Project画面で、デフォルトを使用するか、独自の調整を行ってから次の画面に進みます。 Webを選択し、[完了]をクリックします。 これで、pom.xmlは次のようになります。
org.springframework.boot
spring-boot-starter-parent
1.3.6.RELEASE
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
Spring Bootのバージョンは異なる場合がありますが、最新バージョンは常にhereで検出される場合があります。
4. アプリケーションを実行する
前述のアプリケーションは、プロジェクトを右クリックし、実行をSpring Boot Appとして選択することで起動できます。 STSがない場合、次のコマンドを使用してコマンドラインからアプリケーションを実行する可能性が高くなります。
$ mvn spring-boot:run
デフォルトでは、Springアプリケーションはポート8080で実行されているTomcatで開始されます。 この時点で、アプリケーションはポート8080で起動し、まだコードを実装していないため、基本的には何もしません。 セクション8では、デフォルトのポートを変更する方法を示します。
5. ロギングとANSIコンソール
runコマンドを使用してIDEからプロジェクトを実行すると、コンソールがいくつかの優れたcolor-codedログステートメントを出力することに気付くでしょう。 オフにしたい場合は、run configurations…に移動し、Spring BootタブのチェックボックスEnable ANSI console outputを無効にします。 または、application.propertiesファイルにプロパティ値を設定して無効にすることもできます。
spring.output.ansi.enabled=NEVER
アプリケーションログの構成の詳細については、hereを参照してください。
6. JPAクエリ名のチェック
データアクセスレイヤーの実装は面倒な作業になる場合があります。 単純なクエリを実現し、ページネーションを実行するには、多くの定型コードを作成する必要があります。 Spring Data JPA(JPA)は、このようなデータアクセス層の実装を大幅に促進することを目的としています。 このセクションでは、JPSをSTSと組み合わせて使用する利点のいくつかを説明します。
開始するには、JPAの次の依存関係を以前に生成されたpom.xmlに追加します。
org.springframework.boot
spring-boot-starter-data-jpa
com.h2database
h2
上記の宣言でversionが指定されていないことに気付いたかもしれません。 これは、依存関係が親pom.xmlから管理されているためです。
org.springframework.boot
spring-boot-starter-parent
1.3.6.RELEASE
JPAを機能させるには、エンティティマネージャーとトランザクションマネージャーを適切に定義する必要があります。 ただし、Springはこれらを自動的に設定します。 開発者に残された唯一のことは、実際のエンティティクラスを作成することです。 これらのエンティティは、コンテナによって作成されるエンティティマネージャによって管理されます。 たとえば、次のようなエンティティクラスFooを作成しましょう。
@Entity
public class Foo implements Serializable {
@Id
@GeneratedValue
private Integer id;
private String name;
// Standard getters and setters
}
コンテナーは、構成パッケージのルートから@Entityで注釈が付けられたすべてのクラスをスキャンします。 次に、FooエンティティのJPAリポジトリを作成します。
public interface FooRepository extends JpaRepository {
public Foo findByNames(String name);
}
この時点で、IDEがこのクエリメソッドに例外のフラグを付けていることにすでに気付いているかもしれません。
Invalid derived query! No property names found for type Foo!
これはもちろん、JPAリポジトリのメソッド名に誤って「s」を書き込んだためです。 これを修正するには、次のような偽の「s」を削除します。
public Foo findByName(String name);
構成クラスで@EnableJpaRepositoriesが使用されていないことに注意してください。 これは、コンテナのAutoConfigrationがプロジェクトにコンテナを事前登録しているためです。
7. ジャータイプ検索
「jarTypeSearch」は、STS 3.5.0で導入された機能です。 クラスパス上にない(まだ)クラスのプロジェクトでコンテンツ支援型の提案を提供します。 STSは、クラスパス上にまだない場合にPOMファイルに依存関係を追加するのに役立ちます。
たとえば、Fooエンティティクラスに行を追加しましょう。 この例が正しく機能するためには、最初にjava.util.Listのインポートステートメントがすでに存在することを確認してください。 これで、次のようにGoogle Guavaを追加できます。
private List strings = Lists // ctrl + SPACE to get code completion
IDEは、クラスパスに追加するいくつかの依存関係を提案します。 com.google.common.collect, **から依存関係を追加するreturnを押し、Guavaから依存関係を追加します。 Guava jarは、次のように自動的にpom.xmlファイルに追加されます。
com.google.guava
guava
19.0
バージョンSTS 3.8.0の時点では、STSがpom.xml.に変更を加える前に、確認ダイアログボックスが表示されます。
8. アプリケーション引数の追加
Springのその他の強力な機能の1つは、いくつかの方法でアプリケーションに渡すことができる外部構成のサポートです。 プロパティまたはYAMLファイルで指定されたコマンドライン引数として、またはシステムプロパティとして。 このセクションでは、STSを使用してアプリケーション開始引数として構成オプションを追加することに焦点を当てます。 これは、Tomcatを別のポートで起動するように構成することで示されます。
デフォルト以外のTomcatポートでアプリケーションを実行するには、以下のコマンドを使用できます。ここで、コマンドライン引数としてカスタムポートを指定します。
mvn spring-boot:run -Drun.arguments="--server.port=7070"
STSを使用する場合は、runメニューに移動する必要があります。 [構成の実行]ダイアログからrun configurations…を選択し、左側のパネルからSpring Boot Appを選択し、demo – DemoApplicationを選択します(これは、デフォルトのプロジェクトを選択しなかった場合は異なります)。 Program Argumentsウィンドウの(x)= Argumentsタブタイプから
--server.port=7070
およびrun。 以下に示す出力に類似した出力がコンソールに表示されるはずです。
.
.
2016-07-06 13:51:40.999 INFO 8724 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 7070 (http)
2016-07-06 13:51:41.006 INFO 8724 --- [ main] com.example.boot.DemoApplication : Started DemoApplication in 6.245 seconds (JVM running for 7.34)
9. 結論
この記事では、STSでSpringプロジェクトを開発する基本を示しました。 これまでに示したもののいくつかは、STSでのアプリケーションの実行、Spring Data JPAの開発中のサポート、およびコマンドライン引数の使用です。 ただし、STSには豊富な機能セットが用意されているため、開発中に使用できるさらに便利な機能が多数あります。
この記事のfull implementationは、github projectにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。