整合Thymeleaf
- application.properties
spring.thymeleaf.prefix= classpath:/templates/
spring.resources.static-locations= classpath:/static/
spring.thymeleaf.encoding=UTF-8
#熱部署檔案,友善調試
spring.thymeleaf.cache=false
spring.thymeleaf.mode=HTML5
目錄結構:
與spring boot原生的資源目錄路徑有所差別。

- build.gradle添加依賴
// buildscript 代碼塊中腳本優先執行
buildscript {
// ext 用于定義動态屬性
ext {
springBootVersion = '2.1.2.RELEASE'
}
// 自定義 Thymeleaf 和 Thymeleaf Layout Dialect 的版本
//ext['thymeleaf.version'] = '3.0.3.RELEASE'
//ext['thymeleaf-layout-dialect.version'] = '2.2.0'
// 使用了 Maven 的中央倉庫(你也可以指定其他倉庫)
repositories {
//mavenCentral()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
// 依賴關系
dependencies {
// classpath 聲明說明了在執行其餘的腳本時,ClassLoader 可以使用這些依賴項
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
// 使用插件
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
// 打包的類型為 jar,并指定了生成的打包的檔案名稱和版本
jar {
baseName = 'thymeleaf-in-action'
version = '1.0.0'
}
// 指定編譯 .java 檔案的 JDK 版本
sourceCompatibility = 1.8
// 預設使用了 Maven 的中央倉庫。這裡改用自定義的鏡像庫,速度較快
repositories {
//mavenCentral()
maven {
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
}
// 依賴關系
dependencies {
// 該依賴對于編譯發行是必須的
compile('org.springframework.boot:spring-boot-starter-web')
// 添加 Thymeleaf 的依賴(原先忘記加這個,結果controller不會傳回頁面)
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
// 該依賴對于編譯測試是必須的,預設包含編譯産品依賴和編譯時依
testCompile('org.springframework.boot:spring-boot-starter-test')
//springboot熱啟動
compile("org.springframework.boot:spring-boot-devtools")
}
-
測試類編寫
對子產品進行內建測試時,希望能夠通過輸入URL對Controller進行測試,如果通過啟動伺服器,建立http client進行測試,這樣會使得測試變得很麻煩,比如,啟動速度慢,測試驗證不友善,依賴網絡環境等,是以為了可以對Controller進行測試,我們引入了MockMVC。
MockMvc實作了對Http請求的模拟,能夠直接使用網絡的形式,轉換到Controller的調用,這樣可以使得測試速度快、不依賴網絡環境,而且提供了一套驗證的工具,這樣可以使得請求的驗證統一而且很友善。
API:
perform:執行一個RequestBuilder請求,會自動執行SpringMVC的流程并映射到相應的控制器執行處理;
andExpect:添加ResultMatcher驗證規則,驗證控制器執行完成後結果是否正确;添加執行完成後的斷言(可參照 《補充知識:斷言》)
andDo:添加ResultHandler結果處理器,比如調試時列印結果到控制台;
andReturn:最後傳回相應的MvcResult;然後進行自定義驗證/進行下一步的異步處理;
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class BlogApplicationTests {
@Autowired
MockMvc mockMvc;
@Test
public void contextLoads() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/test/noOne")
.contentType (MediaType.APPLICATION_XHTML_XML)
.accept(MediaType.APPLICATION_XHTML_XML_VALUE))
.andExpect (status().isOk())
.andDo (MockMvcResultHandlers.print ())//執行列印結果
.andReturn()//傳回結果對象
.getResponse ();//拿到響應
}
}