最近流行の(?)Spring bootを使って、仕事で学んだRESTful Web APIを構築していきます。
とりあえず、最近流行(?)のSPAを想定して、
クライアントサイド ~ サーバーサイド ~ データベース
まで繋げることを目標とします。
今回は、STSをダウンロード~Hello Worldまでを記載します。
#環境開発構築
STS(Spring Tool Suite)というプラグイン(?)を利用して開発を行います。
STSとは、Eclipseへインストールするプラグイン、それが既にEclipseにインストールされた状態のものの2種類を指すみたいです。(間違ってたらすみません...)
今回は後者をダウンロードして開発環境を整えます。
といっても、下のURLから最新版のzipファイルをダウンロードしてきて、
ダウンロードしたzipファイルを解凍して終了です。
#事前準備
##STSの動作を軽量化する
STSはEclipseをベースにしているからか、Eclipseと同様の方法で動作を軽くすることができるみたいです。
参考サイト:https://doruby.jp/users/YDM/entries/_eclipse_8_
iniファイルのメモリ設定を変える、コンテンツアシストのAuto設定を無効にするだけでも大分スムーズに動きます。
(コンテンツアシストを利用すると重くなりますが・・・)
#新規プロジェクト作成
##プロジェクトの作成
メニューバーのFile -> New -> Spring Starter Project
を押下します。すると、次の画面が表示されるので、
Name:プロジェクト名
Language:Kotlin
Type:ご自分の使い慣れているものを設定すればよいと思います(今回はMavenを設定します)
を設定します。
nextを押下して、次の画面では、
Available:Jersey(JAX-RS)
を設定。(今回はHelo World出力までが目標なので、それ以外の設定(MyBatis)は省きます。)
他に設定したいものがなければそのままFinishします。
これでプロジェクトを作成できました。
##自動生成クラスの修正
自動生成されたApplicationクラスを開き、手動でクラス名にopen句を設定します
Kotlinでは、openをつけていないクラスは拡張不可(Javaでいうfinal句をつけた状態)として扱われるのですが、
Applicationクラスは拡張不可だと不都合が起きるらしく(サーバ起動時にエラーで落ちました)、その対応となります。
@SpringBootApplication
open class RestsampleApplication
// class RestsampleApplication
fun main(args: Array<String>) {
SpringApplication.run(RestsampleApplication::class.java, *args)
}
##Servletの設定
作成したプロジェクトをservlet3サーバーにデプロイするための設定を行います。
今回はWeb.xmlではなく、ResourceConfigのサブクラスを作成する方法をとります。
Javaの場合はpublicなコンストラクタ内に処理を書きますが、Kotlinではconstructorではなくinitキーワードを利用する必要があります。(ここら辺はプライマリコンストラクタ、セカンダリコンストラクタといったJavaにはない(直接見る機会がないだけ?)の概念が理由みたいです。)
@Component
@ApplicationPath("/api")
class JerseyConfig :ResourceConfig(){
init {
// RESTの窓口クラスの格納されているパッケージを指定
packages("com.example.demo");
}
}
##Resourceクラスの作成
これで最低限の設定は完了しました。
後は、データの送受信を行うためのResourceクラスを作成します。
@Path("/kotlin")
class KotlinResource {
@GET
fun test():String{
return "hello Kotlin REST Web API!!"
}
}
#動作確認
http://localhost8080/api/kotlin
今回はここまで。