• 调用函数

    理解Bean就是一个Map , Map就是一个Bean. 他们之间是可以序列化互转的. 最为典型的互转就是json互转.

    虽然他们本质上是一样的,但是理解和使用的难易程度上,则是一个天上,一个地下,Bean.property觉得是天经地义的。Officers[‘president‘] 就难以理解了。

  1. package com.raycloud.api.common.core.http;
  2. import lombok.Getter;
  3. import lombok.Setter;
  4. import org.springframework.expression.Expression;
  5. import org.springframework.expression.ExpressionParser;
  6. import org.springframework.expression.spel.standard.SpelExpressionParser;
  7. import org.springframework.expression.spel.support.StandardEvaluationContext;
  8. /**
  9. * @author luobo.cs@raycloud.com
  10. * @since 2021/7/16 4:41 下午
  11. */
  12. public class El {
  13. public static void main(String[] args) throws Exception {
  14. ExpressionParser parser = new SpelExpressionParser();
  15. StandardEvaluationContext context = new StandardEvaluationContext();
  16. context.setVariable("chen", "shun");
  17. context.setVariable("ha", 22);
  18. context.setVariable("Temp", new Temp());
  19. context.registerFunction("reverseString1", El.class.getDeclaredMethod("hello", String.class, Integer.class));
  20. context.registerFunction("reverseString2", El.class.getDeclaredMethod("hello", Temp.class));
  21. final Expression expression = parser.parseExpression("#reverseString2(#Temp)");
  22. System.out.println(expression.getValue(context, Boolean.class));
  23. }
  24. public static boolean hello(String name, Integer ha) {
  25. System.out.println(ha);
  26. return name.equals("shun");
  27. }
  28. public static boolean hello(Temp temp) {
  29. System.out.println(temp.getAge());
  30. return temp.getName().equals("shun");
  31. }
  32. @Getter
  33. @Setter
  34. public static class Temp {
  35. private String name = "chenshun00";
  36. private Integer age = 25;
  37. }
  38. }

output

  1. 22
  2. true

文档