LoginSignup
2
1

More than 5 years have passed since last update.

Spring Boot for Kotlin 1

Last updated at Posted at 2017-10-29

Spring Boot

Spring Bootとは?

  • Spring FrameworkはJavaの由緒あるFramework
  • DIやAOP(Aspect Oriented Programming)の機能が特徴的
  • 複雑な依存関係、肥大化した設定、Frameworkの組み合わせの知識を必要とするなどの要素により初心者にはハードルが高い
  • そのような状況を受けて誕生したのがSpring Boot
  • Spring BootはSpringのアプリケーションを簡単に開発するためのFramework

KotlinとSpring BootでHello World

Spring Initializr

Spring InitializrはSpringプロジェクトの雛形を作るツール

Spring Initializr

今回は以下の設定を行う

  • ビルドツール: Gradle
  • 言語: Kotlin
  • Spring Bootのバージョン: 1.5.6
  • Group: com.example
  • Artifact: demo
  • Dependencies: Web

上記設定でダウンロードした.zipファイルを解凍したフォルダをプロジェクトファイルとしてIntelliJ IDEAで開く。
※ Openするだけ、特にGradleの設定等は必要ない

Hello, World

以下のファイルを作成する。

HelloController.kt
package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

@RestController
class HelloController {
    @GetMapping("hello")
    fun hello(@RequestParam("name") name: String): String = "Hello, $name!"
}

DemoApplication.ktで「Run」 -> 「Run...」をクリック

ブラウザで以下のURLを開く

http://localhost:8080/hello?name=Spring

ブラウザに

Hello, Spring!

が表示される

DIを体験する

SpringのDI(Dependency Injection)を簡単に体験する。
まずはインターフェースの実装。

Greeter.kt
package com.example.demo

interface Greeter {
    fun hello(name: String): String
}

次にGreeterインターフェースを実装したクラスを実装する。

JapaneseGreeter.kt
package com.example.demo

import org.springframework.stereotype.Component

@Component
class JapaneseGreeter: Greeter {
    override fun hello(name: String): String = "こんにちは、$name!"
}

DI機能でGreeterの実装を注入

HelloController.kt
package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

@RestController
class HelloController(private val greeter: Greeter) {
    @GetMapping("hello")
    fun hello(@RequestParam("name") name: String): String = greeter.hello(name)
}

HelloControllerがプライマリコンストラクタの引数としてGreeterオブジェクトを受け取るようにしている。
SpringはHelloControllerのインスタンスを生成する際にアノテーション「@Component」が付いたGreeterの実装を見つけてオブジェクトを引数に指定する。

アプリケーションを起動して、上記と同じURLをブラウザで開くと以下が表示される。

こんにちは、Spring!

リンク

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1