SpringBoot视图模板库
Spring非常灵活,能够支持多种常见的模板方案,除个别情况之外,你所选择的视图模板甚至本身并不知道它在于Spring协作。
1.SpringBoot自动装配所支持的模板方案
模板 | SpringBoot Starter依赖 |
FreeMarker | spring-boot-starter-freemarker |
Groovy Templates | spring-boot-starter-groovy-templates |
Java Server Pages(JSP) | 无(由Tomcat或Jetty等Servlet容器提供) |
Mustache | spring-boot-starter-mustache |
Thymeleaf | spring-boot-starter-thymeleaf |
通常来讲,你只需要选择想要的视图模板库,将其作为依赖项添加到构建文件中,然后就可以在“/templates”目录下(在基于Maven或Gradle构建的项目中,它会在“src/main/resources”目录下)编写模板了。
SpringBoot会探测到你所选择的视图模板库,并自动配置为SpringMVC控制器生成视图所需的各种组件。
2.额外说明
JSP并需要在SpringBoot构建文件中添加任何特殊的依赖,这是因为Servlet容器本身(默认是Tomcat)会实现JSP,因此不需要额外的依赖。
但是,如果你选择使用JSP,会有另外一个问题。
事实上,Java Servlet容器(包括嵌入式的Tomcat和Jetty容器),通常会在“/WEB-INF”目录下寻找JSP,如果我们将应用构建成一个可执行的JAR文件,就无法满足这种需求了。
因此,只有将应用构建为WAR文件并部署到传统的Servlet容器中时,才能选择JSP方案。
如果你想要构建可执行的JAR文件,那么必须选择Thymeleaf、FreeMarker等上表中的其它方案。
3.视图模板缓存
默认情况下,视图只会在第一次加载时解析一次,之后的再次请求将会读取缓存。对于生产环境来说,这是一个很棒的特性,它能防止每次请求时多余的模板解析过程,有助于提高性能。
但是在开发阶段,这个特性就不太友好了。因为每次查看变更后的效果需要重新启动引用。
幸运的是,我们可以通过禁用缓存来解决上面的问题
模板 | 启用/禁用模板缓存的属性 |
FreeMarker | spring.freemarker.cache |
Groovy Templates | spring.groovy.template.cache |
Mustache | spring.mustache.cache |
Thymeleaf | spring.thymeleaf.cache |
默认情况下,这些属性都设置为true,以便于启用缓存。我们可以将缓存属性设置为false,从而禁用所选模板引擎的缓存。
唯一需要注意的是,在将应用部署到生产环境之前,一定要删除这一行代码(或将其设置为true)。有一种方法是将该属性设置到profile中,另外一种更简单的方法是使用Spring Boot的DevTools。