WEB/초기설정

Spring Boot - kotlin REST

PSAwesome 2019. 12. 7. 21:17
반응형

안녕하세요.

이번에는 호출 시 1초마다 stock을 출력하는 project 생성을 기록해보겠습니다.

 

언어는 kotlin으로 생성하고, IDE는 intellij로, build는 gradle로 생성합니다. 각 클래스 형식이나 부수적인 설명은 포함되어 있지 않습니다.

 

 

프로젝트 생성

 

  1. spring initializr 선택
  2. SDK 버전을 선택합니다.

 

변경사항

  1. Artifact: 사용자 정의
  2. Type: gradle prject
  3. Language: kotlin
  4. java version: 11
  5. Description: project 설명

 

  1. Web
  2. 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 호출 확인하기

  1. application을 실행
  2. localhost:8080/stocks/test

최종 결과의 출력 화면입니다.

spring boot로 생성해보니 kotlin web도 간단히 만들어볼 수 있는 것 같습니다.

문화 충격을 막을 수 없듯, 기술의 발전을 다 익히고 싶다는 생각을 해봅니다.

 

감사합니다.

반응형