10

我想知道究竟是什么促使 Spring 在其 Web 流产品中使用 Spring EL 而不是 OGNL:

http://static.springsource.org/spring-webflow/docs/2.2.x/reference/htmlsingle/spring-webflow-reference.html#el-language-choices

使用OGNL,我可以直接通过流程动态创建简单的类和执行方法等。我知道在实际的网页模板(即 JSP)中这样做不是一个好习惯,因为它们是基于表示的,但是 Web 流控制您的程序的逻辑,我发现在那里有效使用 OGNL 的能力非常方便。此外,您可以测试流程以确保其轻松运行。

所以,两个问题:

  1. 在 OGNL 上使用 Spring EL 有什么主要好处,尤其是在 Spring Webflow 的上下文中?

  2. 您可以使用 Spring EL 创建对象吗?

4

2 回答 2

15

好吧, SpEL 文档中说明了“为什么” :

虽然还有其他几种可用的 Java 表达式语言,OGNL、MVEL 和 JBoss EL 等等,但创建 Spring 表达式语言的目的是为 Spring 社区提供一种受良好支持的表达式语言,该语言可以在所有产品中使用春季投资组合。

虽然 OGNL 有它的优势和它的粉丝,但它的功能对于 Spring 3 的要求来说太有限了,所以 SpEL 诞生了。由于 SpEL 成为 Spring 的基本表达式语言,WebFlow 转移到它作为 OGNL 的替代品。

不过,我没有太多理由使用 SpEL,所以我无法告诉你如何完成任何特定任务。

至于它的优势,我想说的主要是OGNL现在停滞不前,而SpEL现在是Spring的核心部分,因此会不断改进和扩展。坦率地说,OGNL 已经死了(它现在由 opensymphony.com 维护,这几乎不是一个动态的、活跃的组织)

于 2011-01-11T19:43:44.587 回答
1

并不是说 SpEL 对维护 Spring 的人没有意义,但 OGNL 并没有(彻底)死去,也没有被 opensymphony 维护。

https://github.com/jkuhnert/ognl

所以,那里。噗噗噗噗

更新(2011 年 5 月 23 日):看起来 apache 将从现在开始托管 OGNL。http://incubator.apache.org/projects/ognl.html

更新 2 (2014 年 4 月 3 日): http ://commons.apache.org/proper/commons-ognl/ 它已经存在了一段时间,但我今天再次注意到这个随机线程。

于 2011-01-11T21:16:38.943 回答