簡體   English   中英

Spring Boot 應用程序是否需要模板引擎(即 Thymeleaf)?

[英]Are template engines (i.e. Thymeleaf) necessary for Spring Boot applications?

我目前正在研究一個 Spring Boot 項目,我對模板引擎相當陌生。 這也將是我第一個使用 Spring Boot 的私人項目。

我想知道在使用Spring Boot開發Web應用程序時是否需要包含模板引擎,例如Thymeleaf。 我正在為數據庫使用 PostegreSQL。

我在另一篇文章中讀到,如果后端框架使用 JSON 進行數據交換,則不需要模板引擎,因為模板引擎用於將檢索到的數據呈現為客戶端的 HTML。 我從數據庫中檢索 JSON 對象,然后我可以將模板引擎排除在我的項目之外嗎?

如果需要更多詳細信息,請在下面發表評論。

不,它們不是必需的,事實上,大多數需要網頁的新項目現在都使用單頁應用程序,如Angular、React、Vue 等,而不是 thymeleaf 或 jsp。

除此之外,Spring 項目並不總是需要網頁,例如,當您只是為其他應用程序創建 REST API 以供調用時,或者當您自動化以下內容時:郵件服務/打印/...您的名字它。

但是,當您確實想要一個簡單的解決方案,其中一些頁面不是那么動態或復雜時,pivotal / VMware 確實建議使用 thymeleaf(而不是 jsp 和其他解決方案),因為它很容易集成。

我在另一篇文章中讀到,如果后端框架使用 JSON 進行數據交換,則不需要模板引擎,因為模板引擎用於將檢索到的數據呈現為客戶端的 HTML。 我從數據庫中檢索 JSON 對象,然后我可以將模板引擎排除在我的項目之外嗎?

這在一定程度上是正確的。 是的,Thymeleaf 等主要用於將數據呈現為 HTML。 他們可以呈現任何文本數據,包括 JSON,但有更適合這項工作的工具。 另一方面,您如何在數據庫中存儲數據或使用什么數據庫並不重要。 您不能只是跳過渲染(序列化)響應,因此您如何存儲它並不重要。 重要的是你想返回什么作為響應。 對於 HTML Thymeleaf 甚至 JSP 都適用,但對於 JSON,您可能想要使用 Jackson 或 Gson。

您沒有提到您將要使用的技術,因此對於我的示例,我假設您打算使用 Spring Web MVC。 讓我們來看看“傳統”控制器:

@Controller
public class GreetingController {

    @GetMapping("/greeting")
    public ModelAndView greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new ModelAndView("greeting", "greeting", new Greeting(name));
    }
}

當您向“/greeting”發出 GET 請求時,Spring 將調用greeting並獲取它返回的對象。 在這種情況下,它包含模型(我們要渲染的數據)和視圖(要使用的模板文件)。 然后它會嘗試找到一個視圖(類似於 greeting.html 或 greeting.jsp)並使用像 Thymeleaf 這樣的模板引擎(或其他任何配置)來呈現它(通常是 HTML)。

如果我們想返回 JSON 呢? 在這種情況下,我們需要:

  1. 修改greeting以返回Greeting實例而不是ModelAndView
  2. 使用RestController而不是Controller 這將告訴 Spring MVC 我們要直接序列化返回到 JSON(或類似格式)的對象,而不是使用模板來執行此操作。

這是修改后的示例:

@RestController
public class GreetingController {

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new Greeting(name);
    }
}

Spring MVC 仍然需要一些幫助來將Greeting實例序列化為 JSON。 但是如果你使用 Spring Boot 和 web starter,你就不用擔心了。 它將為您包括傑克遜。

這絕不是詳盡的答案。 事實上,它跳過了很多細節,但我希望它仍然是有用的。 如果您想使用 JSON 創建 REST API,則此構建 RESTful Web 服務指南是一個不錯的起點。 如果您按照從 Spring Initializr 開始的步驟進行操作,您將獲得一個僅包含所需內容的項目設置(也許還有一點額外的,但我不會太擔心)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM