6.10 Spring boot 整合

1、maven 坐标

Spring 整合可以在pom.xml中配置 jfinal 坐标,也可以配置 Enjoy Template Engine 的独立发布版本坐标,其 maven 坐标如下:

  1. <dependency>
  2.   <groupId>com.jfinal</groupId>
  3.   <artifactId>enjoy</artifactId>
  4.   <version>4.9</version>
  5. </dependency>

JFinal Template Engine 的独立发布版本 Enjoy 只有 207K 大小,并且无任何第三方依赖。

3、Spring Boot 整合

Spring boot 下整合配置如下:

  1. @Configuration
  2. public class SpringBootConfig {

  3.   @Bean(name = jfinalViewResolver”)

  4.   public JFinalViewResolver getJFinalViewResolver() {

  5.     

  6.     // 创建用于整合 spring boot 的 ViewResolver 扩展对象

  7.     JFinalViewResolver jfr = new JFinalViewResolver();

  8.     

  9.     // 对 spring boot 进行配置

  10.     jfr.setSuffix(“.html”);

  11.     jfr.setContentType(“text/html;charset=UTF-8”);

  12.     jfr.setOrder(0);

  13.     

  14.     // 获取 engine 对象,对 enjoy 模板引擎进行配置,配置方式与前面章节完全一样

  15.     Engine engine  = JFinalViewResolver.engine;

  16.     

  17.     // 热加载配置能对后续配置产生影响,需要放在最前面

  18.     engine.setDevMode(true);

  19.     // 使用 ClassPathSourceFactory 从 class path 与 jar 包中加载模板文件

  20.     engine.setToClassPathSourceFactory();

  21.     

  22.     // 在使用 ClassPathSourceFactory 时要使用 setBaseTemplatePath

  23.     // 代替 jfr.setPrefix(“/view/“)

  24.     engine.setBaseTemplatePath(“/view/“);

  25.     

  26.     // 添加模板函数

  27.     engine.addSharedFunction(“/common/_layout.html”);

  28.     engine.addSharedFunction(“/common/_paginate.html”);

  29.     

  30.     // 更多配置与前面章节完全一样

  31.     // engine.addDirective(…)

  32.     // engine.addSharedMethod(…);

  33.     

  34.     return jfr;

  35.   }

  36. }

如上所示,jfr.setToClassPathSourceFactory() 配置的 ClassPathSourceFactory 将从class path和jar包中加载模板文件。jfr.addSharedFunction(…) 配置共享模板函数。其上有关 enjoy 的配置本质上与对 Engine 对象的配置是一致的

如果从项目的 webapp 路径下加载模板文件则无需配置为 ClassPathSourceFactory。

2、Spring MVC 整合

在 Spring mvc下整合 Enjoy 非常简单,只需要配置一个 bean 即可,如下是具体配置方式:

  1. <bean id="viewResolver" class="com.jfinal.template.ext.spring.JFinalViewResolver">
  2.   <!-- 是否热加载模板文件 -->
  3.   <property name="devMode" value="true"/>
  4.   <!-- 配置shared function,多文件用逗号分隔 -->
  5.   <property name="sharedFunction" value="/view/_layout.html, /view/_paginate.html"/>
  6.  
  7.   <!-- 是否支持以 #(session.value) 的方式访问 session -->
  8.   <property name="sessionInView" value="true"/>
  9.   <property name="prefix" value="/view/"/>
  10.   <property name="suffix" value=".html"/>
  11.   <property name="order" value="1"/>
  12.   <property name="contentType" value="text/html; charset=utf-8"/>
  13. </bean>

更多、更详细的配置项及其说明,可以通过查看 JFinalViewResolver 头部的注释来了解,在绝大部分情况下,上面的配置项可以满足需求。