Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーサイドkotlinは怖くない:Kotlin ✖︎ Spring Boot

Lukas
August 24, 2017

サーバーサイドkotlinは怖くない:Kotlin ✖︎ Spring Boot

Lukas

August 24, 2017
Tweet

More Decks by Lukas

Other Decks in Technology

Transcript

  1. 自己紹介 - M3のSoftware Engineer - 日本歴12年のドイツ人 - Java経験が少ない → いきなりKotlin

    - よくやってきた言語 - C++ (C++11まで) - PHP5 - Ruby - Github: lukasjapan - RaspberryPiをイジるのが好き - モデル1 は 1台 - モデル3 は 3台
  2. 目次 - イントロダクション - Part I: まずはTutorialを動かしてみる - Part II:

    使いたい機能検証 - A) Spring/Javaで使いたい機能編 - B) Kotlinで使いたい機能編 - Part III: Kotlin/Javaの相違による検証 - 結論
  3. Spring BootのKotlinサポート https://spring.io/blog/2017/01/04/introducing-kotlin-support-in-spring-framework-5-0 • Official Kotlin Support in Spring 5

    • よってOfficial Kotlin Support in Spring Boot 2 • 現在のstableバージョン(2017年8月) ◦ Spring 4.3.10 ◦ Spring Boot 1.5.6
  4. Configuration - ソースコードから拾うConfig - JSONレスポンスのキーケース変換 - 例)fooBar → foo_bar -

    Kotlinのfinal classポリシーに引っかかる - @Configuration class 'Config' may not be final. Remove the final modifier to continue. - Kotlinのクラスは全てfinal - 解決策 - 1) 毎回openを書く - 2) kotlin-springのプラグイン - classpath("org.jetbrains.kotlin:kotlin-allopen:$kotli n_version") - apply plugin: 'kotlin-spring' - Applicationクラスのopenも不要になる
  5. Bean Validation (1) - Javaでバリデーションを行う時の定番 - Class fieldに@NotNull, @Min, アノテーション

    - バリデーショングループ - GET parameterはsetterでobjectに挿入 - 成年と性別をバリデートする 残念なポイント: - arrayOfは書きづらい - lateinit varを使いたい気持ちもあるが - Int/Boolean/...の場合は使えない - Javaと同じようにする
  6. DBアクセス(DOMA2) - DOMA2のSpring Boot用パッケージを検証 - Doma は Java のDBアクセスフレームワーク -

    日本製 - 生SQLもそこそこ書ける - Kotlin実験的サポートのみ - kapt(Kotlin annotation processing tool)の力が必要 - それでも部分的にJavaを書かないといけない - 長く挑戦していないがダメだった - ネットで調べると他の人は使えた - Springのせい? - 生Javaを書いた方が安心
  7. Static Class Members - Spring Bootがstatic fieldをget/setしたい場合 - Stack Overflowの回答より:

    Spring does not allow injecting to static fields. - あったとしても@JvmStaticアノテーションをつけられる