SpringBoot 2がRESTサービスの最近のステータスを構築

構築できる最も単純なものから始めましょう。実際、できるだけ簡単にするために、RESTの概念を省略することもできます。(後で、2つの違いを理解するためにRESTを追加します。)

この例では、管理会社の従業員向けの簡単な給与サービスをモデル化しています。つまり、従業員オブジェクトをH2インメモリデータベースに格納し、JPAを通じてそれらにアクセスする必要があります。これは、リモートアクセス用のSpring MVCレイヤーによってラップされます。

nonrest/src/main/java/payroll/Employee.java

package payroll;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Data
@Entity
class Employee {

  private @Id @GeneratedValue Long id;
  private String name;
  private String role;

  Employee() {}

  Employee(String name, String role) {
    this.name = name;
    this.role = role;
  }
}

小さいですが、このJavaクラスには多くのものが含まれています。

  • @Dataロンボク注釈は、すべてのフィールドのゲッター、セッター、に基づいて、プラグインに使用されequalshashそしてtoString方法。
  • @Entity これは、オブジェクトをJPAベースのデータストレージ領域に格納できるようにするためのJPAアノテーションです。
  • idnameそしてrole、より多くのJPAのアノテーションが自動フィルJPAプロバイダによって、それが主キーであることを示すためにラベル付けされる最初の属性ドメインのオブジェクトです。
  • 新しいインスタンスを作成する必要があるが、まだIDがない場合は、カスタムコンストラクターを作成します。

このドメインオブジェクト定義を使用して、面倒なデータベースの相互作用を処理するためにSpring Data JPAを利用できるようになりましたSpring Dataリポジトリは、バックエンドデータストレージのレコードの読み取り、更新、削除、および作成をサポートするメソッドとのインターフェースです。必要に応じて、一部のリポジトリはデータのページングとソートもサポートします。Spring Dataは、インターフェースのメソッドの命名規則にある規則に従って包括的に実装されています。

JPAに加えて、複数のリポジトリー実装があります。Spring Data MongoDB、Spring Data GemFire、Spring Data Cassandraなどを使用できます。このチュートリアルでは、常にJPAを使用します。

nonrest/src/main/java/payroll/EmployeeRepository.java

package payroll;

import org.springframework.data.jpa.repository.JpaRepository;

interface EmployeeRepository extends JpaRepository<Employee, Long> {

}

インターフェースは、春データJPA延びJpaRepositoryフィールドに指定されたタイプは、EmployeeタイプおよびIDとして指定されていますLongインターフェースは表面上は空ですが、それをサポートしている限り、パッケージ化します。

  • 新しいインスタンスを作成します。
  • 既存のものを更新
  • 削除しています
  • 検索(1つ、すべて、単純または複雑な属性を通じて)

Spring Dataのリポジトリソリューションでは、データストレージの詳細を回避でき、ドメイン固有の用語を使用してほとんどの問題を解決できます。

信じられないかもしれませんが、これでアプリを起動できます!春ブートアプリケーションは、少なくとも一つであるpublic static void mainエントリーポイントと@SpringBootApplication注釈。これは、Spring Bootに可能な限り支援するように指示します。

nonrest/src/main/java/payroll/PayrollApplication.java

package payroll;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class PayrollApplication {

  public static void main(String... args) {
    SpringApplication.run(PayrollApplication.class, args);
  }
}

@SpringBootApplicationこれは、コンポーネントのスキャン自動構成、および属性のサポートを導入できるメタ注釈ですこのチュートリアルでは、Spring Bootの詳細については説明しませんが、本質的にはサーブレットコンテナーを起動してサービスを提供します。

ただし、データのないアプリケーションはあまり面白くないので、プリロードしてみましょう。後続のクラスは、Springの前に自動的にロードされます。

nonrest/src/main/java/payroll/LoadDatabase.java

package payroll;

import lombok.extern.slf4j.Slf4j;

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@Slf4j
class LoadDatabase {

  @Bean
  CommandLineRunner initDatabase(EmployeeRepository repository) {
    return args -> {
      log.info("Preloading " + repository.save(new Employee("Bilbo Baggins", "burglar")));
      log.info("Preloading " + repository.save(new Employee("Frodo Baggins", "thief")));
    };
  }
}

ロード後はどうなりますか?

  • アプリケーションコンテキストがホームにあるならば、春ブーツは、すべての実行されるCommandLineRunner豆のを。
  • ランは、先ほど作成したことを要求しますEmployeeRepositoryコピーを。
  • それを使用して、2つのエンティティを作成して格納します。
  • @Slf4jロンボク島の注釈は自動的に基礎SLF4J作成するために使用されるLoggerFactoryようにlog、我々はこれらの新しく作成された記録できるように、「従業員を。」

右クリックして実行すると PayRollApplication、次のようになります。

データのプリロードを示す、コンソールによって出力されたフラグメント

...
2018-08-09 11:36:26.169  INFO 74611 --- [main] payroll.LoadDatabase : Preloading Employee(id=1, name=Bilbo Baggins, role=burglar)
2018-08-09 11:36:26.174  INFO 74611 --- [main] payroll.LoadDatabase : Preloading Employee(id=2, name=Frodo Baggins, role=thief)
...

これは完全なログではなく、プリロードされたデータの重要な部分のみです。(本当に、コンソール全体を確認してください。これは素晴らしいです。)

232の元の記事を公開 14を 高く評価 20,000以上の訪問

おすすめ

転載: blog.csdn.net/stevenchen1989/article/details/105505701