Spring Boot 控制器如何知道 return 小胡子模板而不是字符串
How does a SpringBoot controller know to return a mustache template instead of a String
我正在穿过 tutorial on Spring Boot using Kotlin。我是 Kotlin 和 Spring 的新手,尽管我已经在其他语言的几个不同的 MVC 风格框架中工作过,所以请理解要点。
我在完成本教程时没有得到的是这些控制器方法中的方式:
package com.example.blog
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(private val repository: ArticleRepository) {
@GetMapping("/")
fun blog(model: Model): String {
model["title"] = "Blog"
model["articles"] = repository.findAllByOrderByAddedAtDesc().map {
it.render()
}
return "blog"
}
}
我们在末尾看到 return "blog"
的地方 Spring 知道 return 带有所提供模型的小胡子模板。
我本来期望像 return MustacheView("blog", model)
(我知道这不是真正的 class 或方法,只是伪编码来举例)或类似的东西,你明确地说“嘿 return 这是一个小胡子模板,而不仅仅是字符串 blog
"..
我敢肯定在幕后有一些魔法 spring 说“哦嘿,你安装了 mustache 依赖项,当你 return 来自控制器的这个字符串时你必须引用模板名称”,但我在文档中看不到它的拼写位置。
完成本教程并不完全需要知道,但目前感觉有点无法解释的魔法,我想知道发生了什么。
当你return一个String
时,它被用作视图名称。此视图名称则为 resolved into a View
implementation.
对于 Mustache,Spring 引导会自动配置一个 MustacheViewResolver
bean。这个 bean 然后被 Spring MVC 拾取并用于将你的 "blog"
变成一个由你的 Mustache 模板支持的 MustacheView
。然后它与传递到您的控制器方法并呈现的 Model
组合。
我正在穿过 tutorial on Spring Boot using Kotlin。我是 Kotlin 和 Spring 的新手,尽管我已经在其他语言的几个不同的 MVC 风格框架中工作过,所以请理解要点。
我在完成本教程时没有得到的是这些控制器方法中的方式:
package com.example.blog
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(private val repository: ArticleRepository) {
@GetMapping("/")
fun blog(model: Model): String {
model["title"] = "Blog"
model["articles"] = repository.findAllByOrderByAddedAtDesc().map {
it.render()
}
return "blog"
}
}
我们在末尾看到 return "blog"
的地方 Spring 知道 return 带有所提供模型的小胡子模板。
我本来期望像 return MustacheView("blog", model)
(我知道这不是真正的 class 或方法,只是伪编码来举例)或类似的东西,你明确地说“嘿 return 这是一个小胡子模板,而不仅仅是字符串 blog
"..
我敢肯定在幕后有一些魔法 spring 说“哦嘿,你安装了 mustache 依赖项,当你 return 来自控制器的这个字符串时你必须引用模板名称”,但我在文档中看不到它的拼写位置。
完成本教程并不完全需要知道,但目前感觉有点无法解释的魔法,我想知道发生了什么。
当你return一个String
时,它被用作视图名称。此视图名称则为 resolved into a View
implementation.
对于 Mustache,Spring 引导会自动配置一个 MustacheViewResolver
bean。这个 bean 然后被 Spring MVC 拾取并用于将你的 "blog"
变成一个由你的 Mustache 模板支持的 MustacheView
。然后它与传递到您的控制器方法并呈现的 Model
组合。