EclipseSTSでのSpringのガイド
1. 概要
この記事では、 Eclipse Spring Tool Suite(STS) IDEの便利な機能のいくつかを説明します。これらは、Springアプリケーションを開発するときに役立ちます。
最初に、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メソッドとそれらの相互関係に関するグラフィカルビューも提供します。 メニューウィンドウ、表示ビュー、
STSは、Springアプリケーションのみに限定されないその他の便利な機能も提供します。 読者は、ここにある機能の完全なリストを確認することをお勧めします。
3. 春のアプリケーションの作成
簡単なアプリケーションをブートストラップすることから始めましょう。 STSがない場合、Springアプリケーションは通常、 Spring InitializerWebサイトまたはSpringBootCLIを使用して作成されます。 これは、STSのダッシュボードから Create Spring StarterProjectをクリックすることで簡単にできます。
New Spring Starter Project 画面で、デフォルトを使用するか、独自の調整を行ってから次の画面に進みます。 Web を選択し、[完了]をクリックします。 pom.xmlは次のようになります。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Spring Bootのバージョンは異なる場合がありますが、最新バージョンは常にここにあります。
4. アプリケーションの実行
前述のアプリケーションは、プロジェクトを右クリックし、 Spring BootAppとして実行を選択することで起動できます。 STSがない場合、ほとんどの場合、次のコマンドを使用してコマンドラインからアプリケーションを実行します。
$ mvn spring-boot:run
デフォルトでは、Springアプリケーションはポート8080で実行されているTomcatで起動されます。 この時点で、アプリケーションはポート8080で起動し、まだコードを実装していないため、基本的に他に何もしません。 セクション8は、デフォルトのポートを変更する方法を示しています。
5. ロギングとANSIコンソール
runコマンドを使用してIDEからプロジェクトを実行すると、コンソールがいくつかの優れた色分けされたログステートメントを出力することに気付くでしょう。 オフにする場合は、実行構成…に移動し、スプリングブートタブのチェックボックスANSIコンソール出力を有効にするを無効にします。 または、application.propertiesファイルにプロパティ値を設定して無効にすることもできます。
spring.output.ansi.enabled=NEVER
アプリケーションログの構成の詳細については、こちらをご覧ください。
6. JPAクエリ名のチェック
データアクセス層の実装は、面倒な作業になる場合があります。 単純なクエリを実現してページネーションを実行するには、多くの定型コードを作成する必要がある場合があります。 Spring Data JPA (JPA)は、このようなデータアクセスレイヤーの実装を大幅に促進することを目的としています。 このセクションでは、JPAをSTSと組み合わせて使用する利点のいくつかを説明します。
開始するには、JPAの次の依存関係を以前に生成されたpom.xmlに追加します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
上記の宣言でバージョンが指定されていないことに気付いたかもしれません。 これは、依存関係がspring-boot-starter-parentによって管理されているためです。
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<Foo, Integer> {
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. ジャータイプ検索
「ジャータイプ検索」は、 STS3.5.0で導入された機能です。 これは、(まだ)クラスパスにないクラスのプロジェクトでコンテンツ支援の提案を提供します。 STSは、POMファイルがまだクラスパス上にない場合に、POMファイルに依存関係を追加するのに役立つ場合があります。
たとえば、Fooエンティティクラスに行を追加しましょう。 この例が正しく機能するためには、最初にjava.util.Listのインポートステートメントがすでに存在していることを確認してください。 ここで、次のようにGoogleGuavaを追加できます。
private List<String> strings = Lists // ctrl + SPACE to get code completion
IDEは、クラスパスに追加するいくつかの依存関係を提案します。 com.google.common.collectから依存関係を追加し、 returnを押して、Guavaから依存関係を追加します。 これで、Guavajarがpom.xmlファイルに次のように自動的に追加されます。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
バージョンSTS3.8.0 では、STSがpom.xml。に変更を加える前に確認ダイアログボックスが表示されます。
8. アプリケーション引数の追加
Springの他の強力な機能の1つは、いくつかの方法でアプリケーションに渡すことができる外部構成のサポートです。 コマンドライン引数として、プロパティまたはYAMLファイルで指定されているか、システムプロパティとして指定されています。 このセクションでは、STSを使用してアプリケーション開始引数として構成オプションを追加することに焦点を当てます。 これは、Tomcatを別のポートで開始するように構成することで示されています。
デフォルト以外のTomcatポートでアプリケーションを実行するには、以下のコマンドを使用できます。ここで、カスタムポートはコマンドライン引数として指定されます。
mvn spring-boot:run -Drun.arguments="--server.port=7070"
STSを使用する場合は、runメニューに移動します。 [構成の実行]ダイアログから実行構成…を選択し、左側のパネルから Spring Boot App を選択し、 demo – DemoApplication を選択します(これは、選択しなかった場合は異なります)デフォルトのプロジェクトを選択します)。 (x)=引数タブからプログラム引数ウィンドウに入力します
--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.baeldung.boot.DemoApplication : Started DemoApplication in 6.245 seconds (JVM running for 7.34)
9. 結論
この記事では、STSでSpringプロジェクトを開発するための基本を示しました。 私たちが示したもののいくつかは、STSでのアプリケーションの実行、Spring Data JPAの開発中のサポート、およびコマンドライン引数の使用です。 ただし、STSは豊富な機能セットを提供するため、開発中に使用できる便利な機能は他にもたくさんあります。
この記事の完全実装はgithubプロジェクトにあります。これはEclipseベースのプロジェクトであるため、そのままインポートして実行するのは簡単です。