Beetl模板引擎的使用及GroupTemplate核心类源码解析
2024-04-23 18:58:14 作者:佚名 本文首发于公众号:腐烂的橘子
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();
}