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プロジェクトの雛形を作るツール
今回は以下の設定を行う
- ビルドツール: 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!