Help us understand the problem. What is going on with this article?

Gradleを通してSpring BootでScalaアプリケーションを動かす

More than 1 year has passed since last update.

この方の記事試した結果をメモ。言語はScalaだけどSpring Bootを使いたい時に役立つかもしれないですね。

概要

  1. build.gradle追記
  2. Spring Boot起動用 Scalaオブジェクトの作成
  3. Spring Bootコントローラー用 Scalaオブジェクトの作成

build.gradle追記

build.gradle
// Scala
apply plugin: 'scala'

dependencies {
    compile 'org.scala-lang:scala-library:2.12.6'
}

Spring Boot起動用 Scalaオブジェクトの作成

プロダクトコード

ApplicationScala.scala
package hello

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
class ApplicationScala {}

object ApplicationScala {

  def main(args: Array[String]): Unit = SpringApplication.run(classOf[ApplicationScala], args: _*)

}

テストコード

Spring Bootを起動させるメイン関数を、テストコードで同カバーするのか未だにわからない。

Spring Bootコントローラー用 Scalaオブジェクトの作成

プロダクトコード

ScalaController.scala
package hello

import org.springframework.web.bind.annotation.{RequestMapping, RequestMethod, RestController}

@RestController
@RequestMapping(Array("/scala"))
class ScalaController {

  @RequestMapping(method = Array(RequestMethod.GET))
  def sample = "sample from scala."

}

テストコード

Spring Bootのアノテーションとか使って、単なるメソッドの返り値だけでなく、URLマッピングを通したAPIの実行結果として、応答の正当性をチェックする。

ScalaControllerTest.scala
package hello

import org.hamcrest.Matchers.equalTo
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.content
import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status

import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.http.MediaType
import org.springframework.test.context.junit4.SpringRunner
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders

@RunWith(classOf[SpringRunner])
@SpringBootTest
@AutoConfigureMockMvc
class ScalaControllerTest {

  @Autowired
  val mvc: MockMvc = null

  @Test
  @throws[Exception]
  def sampleGet_Ok(): Unit =
    mvc.perform(MockMvcRequestBuilders.get("/scala").accept(MediaType.APPLICATION_JSON))
      .andExpect(status.isOk)
      .andExpect(content.string(equalTo("sample from scala.")))
}
mediado
私たちメディアドゥは、電子書籍を読者に届けるために「テクノロジー」で「出版社」と「電子書店」を繋ぎ、その先にいる作家と読者を繋げる「電子書籍取次」事業を展開しております。業界最多のコンテンツラインナップとともに最新のテクノロジーを駆使した各種ソリューションを出版社や電子書店に提供し、グローバル且つマルチコンテンツ配信プラットフォームを目指しています。
https://mediado.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away