引言:上一篇文章中,我们的模板引擎使用的是Thymeleaf(Spring-Boot自动配置的)。如果我想使用自己喜欢的模板引擎(比如FreeMarker、JSTL 等)应该如何做呢?
本篇文章将会在上一篇的基础上,配置一个适合自己的模板引擎(依旧以Thymeleaf为例)。
文件结构
文件结构.png既然是个web项目,那就赋予该项目相应的web项目结构,我在此新建了webapp目录,将resources下的html文件进行拷贝。
编辑WebMvcConfig
新增class,WebMvcConfig.class
package com.practice;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.thymeleaf.spring4.SpringTemplateEngine;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
import org.thymeleaf.templateresolver.TemplateResolver;
/**
* 该配置类 类似于mvc配置文件:spring_mvc.xml
* Created by SXY on 2016/1/19.
*/
// @EnableWebMvc 用来导入mvc框架的自动化配置,使用前提是该类有@Configuration存在
/*@ComponentScan 扫描控制器组件,使用方式有两种:
* 1.指定具体类 例如@ComponentScan(basePackageClasses = HelloController.class),或者 basePackageClasses = {HelloController.class,xxx.class,…}
* 2.指定基础包 例如本例使用的方法,或者数组形式@ComponentScan({"com.*.**","com.*.**"})
* 注:basePackages 关键字 可以选择性添加,默认会自动匹配到basePackages
* */
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.practice")
public class WebMvcConfig {
// 声明页面的编码格式、类型
private static final String CONTENTTYPE = "text/html; charset=UTF-8";
// Thymeleaf框架配置
@Bean
public TemplateResolver templateResolver(){
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".html");
// 去除缓存
resolver.setCacheable(false);
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean
public SpringTemplateEngine templateEngine(){
SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
springTemplateEngine.setTemplateResolver(templateResolver());
return springTemplateEngine;
}
/**
* 模板引擎解释器
* @return
*/
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setContentType(CONTENTTYPE);
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setOrder(1);
return viewResolver;
}
}
编辑Application
package com.practice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
/**
* Created by SXY on 2016/1/18.
*/
/* @SpringBootApplication 包含了:
* 1、@Configuration 该类是一个配置文件
* 2、@EnableAutoConfiguration 告诉spring-boot 进行自动化配置,加载基础包
* 3、@ComponentScan 自动扫描当前包下的class,完成mvc配置
* exclude 关键字,用来排除不需要的配置。比如我们要自定义 模板引擎,原有的就可以排除掉
* */
@SpringBootApplication(exclude = {ThymeleafAutoConfiguration.class})
public class Application {
// main方法作为程序入口,启动spring程序
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
测试
再次运行:
mvn spring-boot:run
测试成功.png
小结
在配置自己喜欢的模板引擎,记得添加相关依赖(pom.xml)
这里是官网 View technologies 介绍 传送门
项目源码地址 (http://git.oschina.net/tobe/Spring4MVC/tree/template_engine/)
强烈建议大家多用 Git
网友评论