整合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 ();//拿到响应
}
}