SpringBoot控制器如何知道返回一个胡子模板而不是字符串



我正在使用Kotlin浏览关于Spring Boot的教程。我是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 MustacheView("blog", model)的东西(我知道这不是一个真正的类或方法,只是用来举例说明的伪代码(或类似的东西,其中你明确地说";嘿,将其作为胡子模板返回,而不仅仅是字符串blog";。。

我相信在春天说";哦,嘿,你已经安装了胡子依赖项,当你从控制器返回这个字符串时,你必须引用一个模板名称",但我在文档中看不到这一点。

完成教程并不完全需要知道,但目前感觉有点无法解释的魔力,我想知道发生了什么。

返回String时,它将用作视图名称。然后,该视图名称被解析为View实现。

在Mustache的情况下,Spring Boot自动配置MustacheViewResolverbean。这个bean随后被SpringMVC获取,并用于将"blog"转换为由Mustache模板支持的MustacheView。然后将其与传递到控制器方法中并进行渲染的Model相结合。

最新更新