天天看點

SpringBoot之整合Thymeleaf

整合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原生的資源目錄路徑有所差別。

SpringBoot之整合Thymeleaf
  • 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 ();//拿到響應
	}

}
           

繼續閱讀