반응형
안녕하세요.
이번에는 호출 시 1초마다 stock을 출력하는 project 생성을 기록해보겠습니다.
언어는 kotlin으로 생성하고, IDE는 intellij로, build는 gradle로 생성합니다. 각 클래스 형식이나 부수적인 설명은 포함되어 있지 않습니다.
프로젝트 생성
- spring initializr 선택
- SDK 버전을 선택합니다.
변경사항
- Artifact: 사용자 정의
- Type: gradle prject
- Language: kotlin
- java version: 11
- Description: project 설명
- Web
- Spring Reactive Web
생성 후 Application을 실행하여 동작 여부를 확인합니다.
Application이 있는 package인 demo에 RestController.kt 파일을 생성합니다.
package com.psawesome.kotlinservice.demo.controller
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RestController
import reactor.core.publisher.Flux
import java.time.Duration
import java.time.LocalDateTime
import java.util.concurrent.ThreadLocalRandom
@RestController
class RestController {
@GetMapping(value = ["/stocks/{symbol}"], produces = [MediaType.TEXT_EVENT_STREAM_VALUE])
fun prices(@PathVariable symbol: String): Flux<StockPrice> {
return Flux.interval(Duration.ofSeconds(1))
.map{
StockPrice(symbol, randomStockPrice(), LocalDateTime.now())
}
}
private fun randomStockPrice(): Double {
return ThreadLocalRandom.current().nextDouble((100.0))
}
}
data class StockPrice (val symbol: String,val price: Double, val time: LocalDateTime) {
}
위 예제에서 demo.controller.RestController의 내용입니다. 세 가지 정도의 분류로 나누어 보았습니다.
- @RestController 클래스
- @GetMapping prices
- data class StockPrice
rest 호출 확인하기
- application을 실행
- localhost:8080/stocks/test
최종 결과의 출력 화면입니다.
spring boot로 생성해보니 kotlin web도 간단히 만들어볼 수 있는 것 같습니다.
문화 충격을 막을 수 없듯, 기술의 발전을 다 익히고 싶다는 생각을 해봅니다.
감사합니다.
반응형