Kotlin Springboot -- Part 3 Controller を Resource 層にして Usecase につなげる
kaede
Posted on August 28, 2022
HTMLController を SpringbootResource にする
package com.example.springboot
import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.ui.set
import org.springframework.web.bind.annotation.GetMapping
@Controller
class HtmlController {
@GetMapping("/")
fun nanika(model: Model): String {
model["title"] = "SpringBlog"
return "index"
}
}
これが HtmlContorller.kt というファイルで書かれていて
アプリを起動すると index に渡したものを表示する
MVC のアーキにしたがってコントローラーと名付けていた
CA に変えるので リソースにする
@Controller
class SpringbootResource {
@GetMapping("/")
fun root(model: Model): String {
model["title"] = "Springboot Root"
return "index"
}
}
これでリソースとして使う。
Usecase を呼びやすくする
fun getTaroHanakoName():String {
val taroName = taro.findName()
val hanakoName = hanako.findName()
return "$taroName,$hanakoName";
}
Usecase の関数を呼びやすいまとめるものにする
SpringbootResource で Model と Template を噛ませながら Usecase を呼ぶ
@GetMapping("/names")
fun taro(model:Model): String {
model["title"] = getTaroHanakoName()
return "index"
}
model と index のテンプレートを噛ませて
Usecase からの値を出力する
これで /names にアクセスした時に Usecase -> Driver まで動いて
中身を web に出せた。
2022-08-29 00:14:57.777 ERROR 1463816
--- [nio-8080-exec-1] org.thymeleaf.TemplateEngine :
[THYMELEAF][http-nio-8080-exec-1]
Exception processing template "Taro":
Error resolving template [Taro],
template might not exist or might not be accessible
by any of the configured Template Resolvers
なお、 Thymleaf を使ってしまっているので
Template と Model ナシで直接 Usecase を
Getmapping に噛ませ用途すると失敗する。
まとめ
Kotlin Springboot で Rest/Resource 層から
Usecase -> Driver としてデータをとってくるためには
旧来の Controller の書き方で書いて、名前を Resource にして
Usecase の呼び出しの結果を model に渡して
template で表示する。
💖 💪 🙅 🚩
kaede
Posted on August 28, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
kotlin Kotlin Springboot -- Part 13 REST で決まった形の JSON データの入った POST リクエストを受け取れるようにする
October 12, 2022
kotlin Kotlin Springboot -- Part 10 Port という interface を作って Usecase と Gateway をつなぐ
September 21, 2022
kotlin Kotlin Springboot -- Part 8 インスタンスの作成を Component 機能を使って Dependency Injection が自動で行われるようにする
September 10, 2022
kotlin Kotlin Springboot -- Part 7 Rest でドメインのデータクラスから JSON のためのデータクラスに変換して JSON に変換する
September 8, 2022