springboot系列四、配置模板引擎、配置熱部署


一、配置模板引擎

  在之前所見到的信息顯示發現都是以 Rest 風格進行顯示,但是很明顯在實際的開發之中,所有數據的顯示最終都應該交由頁面完成,但是這個頁面並不是*.jsp 頁面,而是普通的*.html 頁面,而且最為重要的是,此處所使用的渲染的頁面采用的是模版方式 的顯示,而在 Java 開發行業,對於前台的顯示模版常見的一共有三類技術:FreeMarker、Velocity、beetle、jsp、thymeleaf(推薦使用),於是下 面就利用 thymeleaf 實現一個簡單的模版渲染操作。

1、導入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2、Model 傳參

類似在 SpringMVC 的時代使用的是 ModelAndView 傳遞,SpringBoot 里面如果要傳遞直接在方法中定義一個 Model 參數即可。

    @RequestMapping("/getUser")
    public String getUser(Model model) {
        model.addAttribute("userName","小明");
        model.addAttribute("phone","123456");
        return "user";
    }

3、控制跳轉

使用“@Controller”注解,時執行該控制器的方法后會進行跳轉處理。如果現在要進行跳轉頁面的定義,有嚴格要求:在CLASSPATH路徑下(src/main/resources、src/main/view)必須建立有一個templates的目錄,在這個目 錄里面保存有thymeleaf的所有相關頁面,這些頁面可以按照文件目錄保存;resources下建立templates目前,創建user.html。

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>SpringBoot模版渲染</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<p th:text="${userName}"/>
<p th:text="${phone}"/>
</body>
</html>

4、yml中配置html后綴

spring:
  thymeleaf:
    suffix: .html

5、驗證

啟動,訪問:http://192.168.1.100:8082/springboot-demo/getUser

二、熱部署配置

1、添加依賴

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

說明:

(1) devtools可以實現頁面熱部署(即頁面修改后會立即生效,這個可以直接在application.properties文件中配置spring.thymeleaf.cache=false來實現),
實現類文件熱部署(類文件修改后不會立即生效),實現對屬性文件的熱部署。
即devtools會監聽classpath下的文件變動,並且會立即重啟應用(發生在保存時機),注意:因為其采用的虛擬機機制,該項重啟是很快的
(2)配置了后在修改java文件后也就支持了熱啟動,不過這種方式是屬於項目重啟(速度比較快的項目重啟),會清空session中的值,也就是如果有用戶登陸的話,項目重啟后需要重新登陸。

默認情況下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public這些文件夾下的文件修改不會使應用重啟,但是會重新加載(devtools內嵌了一個LiveReload server,當資源發生改變時,瀏覽器刷新)。

2、配置熱啟動和監聽目錄

devtools的配置

在application.properties中配置spring.devtools.restart.enabled=false,此時restart類加載器還會初始化,但不會監視文件更新。
在SprintApplication.run之前調用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全關閉重啟支持,配置內容:

#熱部署生效
spring.devtools.restart.enabled: true
#設置重啟的目錄
#spring.devtools.restart.additional-paths: src/main/java
#classpath目錄下的WEB-INF文件夾內容修改不重啟
spring.devtools.restart.exclude: templates/**

3、IDEA配置自動編譯

當我們修改了Java類后,IDEA默認是不自動編譯的,而spring-boot-devtools又是監測classpath下的文件發生變化才會重啟應用,所以需要設置IDEA的自動編譯:

(1)File-Settings-Compiler-Build Project automatically

 

(2)ctrl + shift + alt + /,選擇Registry,勾上 Compiler autoMake allow when app running

 

4、測試

  • 修改類–>保存:應用會重啟
  • 修改配置文件–>保存:應用會重啟
  • 修改頁面–>保存:應用不會重啟,但會重新加載,頁面會刷新(原理是將spring.thymeleaf.cache設為false,參考:Spring Boot配置模板引擎)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM