KotlinでSpring BootのRESTful APIを実装




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

Spring Boot

これからJavaのアプリケーションを実装するならKotlinでSpring Bootをおすすめします。今回はこの2つを使ったRESTfulなCRUDサーバーの実装を簡単に紹介します。ソースコードはgithubに公開しているので参考にしてください。

https://github.com/tomokazukozuma/ToDoAppForKotlin

環境

  • Mac OS X
  • Eclipse Pleiades All in One 4.7.0
  • Java 8
  • Kotlin 1.1.3
  • Spring Boot 1.5.4.RELEASE

手順

  1. Eclipseを使ったKotlinの環境構築
  2. Flywayを使ったMySQLのマイグレーション
  3. フォルダ構成
  4. Controllerの書き方
  5. Entityの書き方
  6. Repositoryの書き方

1. Eclipseを使ったKotlinの環境構築

無料のIDEで高機能なEclipseを今回は使用します。Spring BootはSpring スターター・プロジェクトという機能で必要最小限の機能を導入してプロジェクトを始められます。今回はweb, JPA, MySQL, Flywayという機能を最初に選択します。

環境構築の詳細は下記記事を参考してください。

EclipseでSpring BootとKotlinの環境構築

 

2. Flywayを使ったMySQLのマイグレーション

環境構築が完了したら完了したら次はDBの準備をします。DBのマイグレーションにはFlywayを使用します。導入がものすごく簡単で使い始めるまでに他に何もインストールしなくて済むのでおすすめです。

Flywayの詳細は下記記事を参考にしてください。

Spring BootでFlywayを使用したMySQLのマイグレーション

今回作成するテーブルは下記2つです。このテーブルをFlywayで作るように設定してください。DB名はtodoappとしておきましょう。

 

3. フォルダ構成

参考までにフォルダ構成は下記のようにしています。

 

4. Controllerの書き方

jsonを返すRESTful APIなのでview関連の処理は何もありません。なので@RestControllerを使用してjsonを返しています。

 

5. Entityの書き方

entityは基本的にはデータを保持するだけなのでKotlinのdataクラスを使用して書きます。varで宣言するとsetter,getterをvalで宣言するとgetterが生成されます。またdataクラスはプライマリコンストラクタにプロパティを設定するだけで下記のものが生成されます。

  • equals()/hashCode()
  • インスタンスのプロパティを表示するtoString()
  • 宣言順で内容を取り出すcomponentN()
  • copy()
 

6. Repositoryの書き方

RepositoryはJavaで書いてもそんなに変化なくかけます。

まとめ

ソースコードを少し紹介するだけになってしまいましたが、シンプルなRestful APIなら時間もかからずにすんなりかけました。Javaを使ってる人はこの機会にKotlinを試してみてください。

他にもSpring Bootについて書いているので下記リンクを是非参照してみてください!

おすすめ書籍

JPAに関して体系的に学べる良い書籍だと思います。良くあるSpring系書籍ですとJPAは少ししか紹介がありませんが丸々一冊JPAに関してなので詳細な解説がされています。内容はJPAと他のORMとの比較から始まりセットアップ、実装の仕方まで幅広く網羅されています。これからJPAで開発を初めてみようかなと考えている方は一読することをオススメします!

Springの概要からインストール方法、各コア機能(Security, Sessionなど)の解説が体系的にまとめられています。2018年に出版されたばかりなので情報も新しいです。これからSpring Bootでアプリケーション開発をしたい方の最初に読む一冊としておすすめします。対象は初心者だけでなく上級者まで幅広く学べるので是非読んでみてください!

 

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です