マイクロサービスとは
開発環境
- Spring Tools Suite
今回作成するサービス
データベースにデータを登録します。
プロジェクトの作成
Spring Tools Suiteを起動して、「Springスターター・プロジェクト」を作成します。Springスターター・プロジェクトを作成すると、Spring Bootで使用できる最低限のひな型ソースやpom.xmlが生成されます。このひな形プロジェクトを開発するサービス用にカスタマイズしていきます。
生成されるpom.xmlには、あらかじめSpringコミュニティが提供するSpring Bootを利用するために必要な基本的な情報が定義されています。
Spring Bootで開発したサービスをビルドするための設定をします。pom.xmlのSpring Boot Mavenプラグインにrepackageゴールを設定し、ビルド時に既存のJARが再パッケージ化されるようにします。
最後にpom.xmlを編集し、サービスで利用するモジュールの依存関係を追加します。マイクロサービスでは、APIをもったサービスを開発する必要があるため、最低限Spring MVCを利用するためのspring-boot-starter-webを追加する必要があります。
それ以外のモジュールは、プログラムで利用するものを必要に応じて追加します。作成するサービスではLombok、Spring Data JPA、ModelMapperを利用するので、これらのモジュールの依存関係を追加します。
サービスの作成
開発環境が準備できたら、サービスを作成していきましょう。サービスはSpring MVCで実装します。もともとSpring MVCはWebアプリケーションをModel層、View層、Controller層の役割分担に分けて実装するためのフレームワークですが、このフレームワークのModel層、Controller層をサービスを実装するのに利用します。ただし、APIをインタフェースとするのでView層は使用せず代わりにRest Controllerを使用してREST APIを実装します。
Model層の実装
APIのリクエスト/レスポンスに対応するModelやService層内で利用するModelをPOJOで実装します。なお、今回のサービスではPOJOの実装にLombokを利用し、実装をシンプルにしています。
まず、APIのリクエストに対応するModelを作成します。APIの電文であるJSONとModelの変換は暗黙的にSpring Bootで行われますが、フィールドにJacksonアノテーション(@JsonPropertyなど)を付与することで、このJSONへの変換時のマッピングや挙動をカスタマイズできます。
このサンプルコードでは@JsonPropertyを指定して、Modelに対応する電文のプロパティ名を変更しています。同様に、APIのレスポンスに対応するModelを作成します。