### 1、SnEL 模板接口说明



| 接口 | 描述 | 
| -------- | -------- | 
| `SnEL.parseTmpl(...)`     | 解析模板表达式     | 
| `SnEL.evalTmpl(...)`       | 执行模板表达式     | 




模板占位符说明

| 接口 | 描述 | 
| -------- | -------- | 
| `#{...}`            | 求值表达式占位符（内部为一个求值表达式）     | 
| `${..}` 或 `${...:def}`           | 属性表达式占位符     | 


`${   }` （属性表达式会从 `PropertiesGuidance` 接口优先获取。如果没有？再以 `key` 方式从 `context` 获取）

### 2、模板表达式应用


```java
Map<String, Object> data = new HashMap<>();
data.put("a", 1);
data.put("b", 1);

SnEL.evalTmpl("a val is #{a}");
SnEL.evalTmpl("sum val is #{a + b}");
```



### 3、带属性的模板表达式应用


```java
Map<String, Object> data = new HashMap<>();
data.put("a", 1);
data.put("b", 1);

EnhanceContext context = new EnhanceContext(data);
context.forProperties(Solon.cfg()); //绑定应用属性，支持 ${表过式}

SnEL.evalTmpl("sum val is #{a + b},  c prop is ${demo.c:c}");
```

