SPEL简单使用教程
public class SpelTest {
public static void main(String[] args) throws NoSuchMethodException {
ExpressionParser parser = new SpelExpressionParser();
Person person = new Person();
person.setName("李四");
System.out.println(parser.parseExpression("'Hello SPEL.'").getValue());
System.out.println(parser.parseExpression("'1、2中的较大值是:' + T(java.lang.Math).max(1, 2)").getValue());
System.out.println(parser.parseExpression("'当前时间:' + new java.util.Date()").getValue());
System.out.println(parser.parseExpression("'你的名字是:' + #root.name").getValue(person, String.class));
System.out.println(parser.parseExpression("你的名字是:#{#root.name}", new TemplateParserContext()).getValue(person, String.class));
StandardEvaluationContext context = new StandardEvaluationContext();
context.setVariable("k1", "v1");
context.setVariable("k2", "v2");
context.setVariable("person", person);
context.setVariable("persons", Arrays.asList(new Person("王五"), new Person("赵六")));
context.setVariable("name", "张三");
Method addMethod = SpelTest.class.getDeclaredMethod("add", int.class, int.class);
context.registerFunction("add", addMethod);
System.out.println(parser.parseExpression("'k1=' + #k1 + ', k2=' + #k2").getValue(context, String.class));
System.out.println(parser.parseExpression("'我是:' + #person.name").getValue(context, String.class));
System.out.println(parser.parseExpression("'我是:' + #persons[1].name").getValue(context, String.class));
System.out.println(parser.parseExpression("'我是王五,' + #person.say(#name)").getValue(context, String.class));
System.out.println(parser.parseExpression("'1 + 2 = ' + #add(1, 2)").getValue(context, String.class));
System.out.println(parser.parseExpression("我是:#{#person.name}", new TemplateParserContext()).getValue(context, String.class));
System.out.println(parser.parseExpression("当前时间:#{new java.util.Date()}", new TemplateParserContext()).getValue(context, String.class));
System.out.println(parser.parseExpression("1、2中的较大值是:#{T(java.lang.Math).max(1, 2)}", new TemplateParserContext()).getValue(context, String.class));
System.out.println(parser.parseExpression("我是王五,#{#person.say(#name)}", new TemplateParserContext()).getValue(context, String.class));
}
public static int add(int a, int b) {
return a + b;
}
}
@Data
@AllArgsConstructor
@NoArgsConstructor
class Person {
private String name;
public String say(String name) {
return "你好," + name;
}
}