我正在查看spring表达式语言,如果您用于配置xml文件,它似乎非常有用。但是,参考文档提供了许多使用以下代码的示例:
ExpressionParser parser = new SpelExpressionParser();
String name = parser.parseExpression
我何时以及为什么要使用它,因为我可以使用常规java来完成所有操作。我是否缺少SpelExpressionParser可以使用的一些功能或其他用途?是否还有其他用于spEL的用例我不知道?
答案 0 :(得分:11)
您可以使用SpEL作为Java反射的简化替代方法。它为您减少了很多代码 我在工作中遇到的一个用例是将深度对象图展平为名称 - 值对,以便进行索引和查找。
客户可以扩展对象图,在这种情况下,还应该为其他属性编制索引。通过使用SpEL,客户只需要在某些属性文件中编写表达式,框架代码负责提取新数据。
所有use-cases of Java reflection也是SpEL的潜在用例,增加了简洁性并减少了代码。
答案 1 :(得分:2)
为了评估java中的任意运行时表达式,你需要使用编译框架,创建一个类,编译它,加载它,绑定它,执行它,......
表达式语言和/或脚本消除了许多与您尝试解决的问题没有直接关系的额外工作。使用哪种EL最有意义取决于几个因素。