Beetl模板引擎的使用及GroupTemplate核心类源码解析

本文首发于公众号:腐烂的橘子

Beetl是一款Java模板引擎,被广泛应用于公司项目中。它的作用在于编写通用代码时,处理一些差异化的逻辑。通过将这些差异化的逻辑写入模板中,程序可以直接调用,实现了代码的低耦合。

有人可能会问,为什么差异化的东西不能通过配置实现呢?原因在于配置只能将一些差异化的值抽离出来,而一些复杂的逻辑很难通过配置实现。举例来说,假设有一个类似计算器的界面,用户可以对一些业务字段进行公式计算:

  • 分润 = 利息 * 0.2
  • 分润 = (利息 + 罚息) * 0.1

程序在计算这个表达式之前,并不知道表达式的具体内容,只是希望能够由业务传入利息、罚息等字段上下文信息后,自动计算出结果。这时使用Beetl模板,我们可以将上面的公式用Beetl表达式表示:

  • <%print(interest * 0.2);%>
  • <%print((interest + penalty) * 0.2);%>

这样,代码中就不需要感知具体公式内容了,直接写通用逻辑即可:

public static void main(String[] args) throws IOException {
    // 用户输入的公式
    String formula = "xxxx";
    // 计算结果的上下文参数
    HashMap param = new HashMap();
    // 核心代码
    GroupTEMPlate gt = new GroupTemplate(new StringTemplateResourceLoader(), Configuration.defaultConfiguration(););
    Template template = gt.getTemplate(formula);
    template.binding(new HashMap());
    // ans 就是计算的结果
    String ans = template.render();
}
热门手游下载
下载排行榜