最近黒べこ本(会社のお金で)買いました。サーバーサイドでもKotlinはいいぞ。
今回はKotlinのSpringBootでハロワします。
記事執筆時点でのプロジェクトリポジトリは以下。
github.com
やること
- SpringInitializrでプロジェクトの概形を作る
- Controllerを追加する
SpringInitializrでプロジェクトの概形を作る
https://start.spring.io/
使い方はネット上に解説記事が有るので省略します。
自分はGradle Project/Kotlin、Spring Boot 2.1.1で初期化しました。
そのままやるとパッケージ名が大文字になってしまうので、その点は修正を行いました。
Controllerを追加する
以下のような形でMyControllerという名前でコントローラーを追加しました。
import org.springframework.ui.Model import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("my") class MyController{ @GetMapping fun myGetTest(model: Model): String{ return "hello from spring boot" } }
このままだとimplementsが足りなかったり警告が出たりするので、build.gradleに以下の2つを追加します。
implementation(group: 'org.springframework.boot', name: 'spring-boot-starter-web') implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
追加後全文。
buildscript { ext { kotlinVersion = '1.2.71' springBootVersion = '2.1.1.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}") classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}") } } apply plugin: 'kotlin' apply plugin: 'kotlin-spring' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.wrongwrong' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 compileKotlin { kotlinOptions { freeCompilerArgs = ["-Xjsr305=strict"] jvmTarget = "1.8" } } compileTestKotlin { kotlinOptions { freeCompilerArgs = ["-Xjsr305=strict"] jvmTarget = "1.8" } } repositories { mavenCentral() } dependencies { implementation('org.springframework.boot:spring-boot-starter') implementation(group: 'org.springframework.boot', name: 'spring-boot-starter-web') implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") testImplementation('org.springframework.boot:spring-boot-starter-test') }
アクセス結果
動かした上でhttp://localhost:8080/my
へアクセスすると、以下が表示されます。
続き
バリデーションまでやってます。
wrongwrong163377.hatenablog.com