Gradle + Kotlin + Spring を入門してみた。
Kotlinは良いみたいな話をよく聞くので、手始めにKotlinを弄るための環境として、
SpringとGradleで実行環境を作ったときのメモです。
今回のゴール
シンプルに文字列だけを返す、GETのAPIを作ってみる。
雛形作成
まずは、プロジェクトの雛形を作ります。
SpringInitializerでさくっと作りましょう
設定は下記の画像を見てください。
↑で生成されたプロジェクトの時点でメインファイルがすでにKotlinに状態で作られています。
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}
Gradleの設定をする
プロジェクトのルートの直下にgradle.build.kts
というファイルがあり、これがgradleの設定ファイルとなります。
ファイル名を見ればわかりますが、kotlinでgradleの設定を書いていきます。
初期だとAPIの機能を提供していいないので、それを使用するためのパッケージを使えるようにします。
また、後々DBにも接続したいのでコネクターも追加しておきます。
なので dependencies
に追加します。
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import sun.security.pkcs.PKCS8Key.version
plugins {
id("org.springframework.boot") version "2.2.5.RELEASE"
id("io.spring.dependency-management") version "1.0.9.RELEASE"
kotlin("jvm") version "1.3.61"
kotlin("plugin.spring") version "1.3.61"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_1_8
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-jooq")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("mysql:mysql-connector-java") // 追加
implementation("org.springframework.boot:spring-boot-starter-web") // 追加
testImplementation("org.springframework.boot:spring-boot-starter-test") {
exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "1.8"
}
}
ついでにDBの設定もしておきます。
src/main/redources/application.properties
に以下を追記します。
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=root
APIを作成する
これでビルド周りの準備ができたのでKotlinのコードを実際に書いていきます。
単純な文字列を返すシンプルなAPIを作成するので、以下のような感じになります。
package com.example.demo.presentation.controller
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestMethod
import org.springframework.web.bind.annotation.RestController
@RestController
class HelloController {
@RequestMapping(value = ["/hello"],method = [RequestMethod.GET])
fun helloRouter(): String {
return "hello";
}
}
実際に書いて思ったのは、
RequestMappingのvalueとmethod が配列でしか受け取れなかったことです。
実行してみる
プロジェクトのルートに移動して以下のコマンドを実行
./gradlew bootRun
これで、常にサーバーが立ちっぱなしなるので、
成功すれば、
<==========---> 80% EXECUTING [7m 23s]
> IDLE
> :compileKotlin > Resolve files of :compileClasspath > jackson-datatype-jdk8-2.10.2.jar
> IDLE
> IDLE
> :bootRun
> IDLE
こんな感じでとまります。
↓にアクセスして、helloという文字がでたら成功です。
http://localhost:8080/hello
最後に
環境構築とシンプルなAPIだけでしたが、gradleがkotlinになっていたり、
アノテーションの引数の型が違っていたりといろいろ変わっているのだなと感じました。
ちょいちょい学んで行きたいと思います。
Author And Source
この問題について(Gradle + Kotlin + Spring を入門してみた。), 我々は、より多くの情報をここで見つけました https://qiita.com/souhei-etou/items/c6c9b9a5706f4783241e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .