Преимущества использования Spring EL по сравнению с OGNL?

Мне было интересно, что именно побудило Spring использовать Spring EL поверх OGNL в своем продукте веб-потока:

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

С OGNL я могу динамически создавать простые классы и выполнять методы и т. д. прямо в потоке. Я знаю, что делать это в реальных шаблонах веб-страниц (то есть JSP) не рекомендуется, потому что они основаны на представлении, но веб-поток контролирует логику вашей программы, и я считаю, что возможность эффективно использовать OGNL очень удобна. Кроме того, вы можете протестировать поток, чтобы убедиться, что он работает легко.

Итак, два вопроса:

  1. Есть ли какие-либо существенные преимущества использования Spring EL по сравнению с OGNL, особенно в контексте Spring Webflow?

  2. Можете ли вы создавать объекты с помощью Spring EL?


person MetroidFan2002    schedule 11.01.2011    source источник


Ответы (2)


Что ж, «почему» указано в документах SpEL:

Хотя существует несколько других доступных языков выражений Java, например, OGNL, MVEL и JBoss EL, язык выражений Spring был создан, чтобы предоставить сообществу Spring единый хорошо поддерживаемый язык выражений, который можно использовать во всех продуктах в Весеннее портфолио.

Хотя у OGNL есть свои преимущества и свои поклонники, его функциональность слишком ограничена для того, что требовалось для Spring 3, и так родился SpEL. И поскольку SpEL стал базовым языком выражений для Spring, WebFlow перешел на него в качестве замены OGNL.

Однако у меня не было особых причин использовать SpEL, поэтому я не могу рассказать вам, как выполнять какую-либо конкретную задачу.

Что касается его преимуществ, я бы сказал, что основным из них является то, что, хотя OGNL сейчас находится в застое, SpEL теперь является основной частью Spring, и поэтому он будет постоянно улучшаться и расширяться. Грубо говоря, OGNL мертв (сейчас его поддерживает opensymphony.com, вряд ли это динамичная и активная организация).

person skaffman    schedule 11.01.2011
comment
Принятый. Кстати, я узнал, что вы можете напрямую использовать новый оператор в Spring EL, так что да, вы можете создавать объекты! Потрясающий. - person MetroidFan2002; 12.01.2011
comment
@MetroidFan2002: Сходство между Unified EL и SPEl лишь внешнее. SpEL гораздо более выразительный и мощный, просто он использует похожий синтаксис. - person skaffman; 12.01.2011

Не утверждая, что SpEL не имеет смысла для людей, поддерживающих Spring, но OGNL не (полностью) мертв и не поддерживается opensymphony.

https://github.com/jkuhnert/ognl

Так что. пфффттттттт

Обновление (23.05.11): похоже, что теперь Apache будет размещать OGNL. http://incubator.apache.org/projects/ognl.html

Обновление 2 (3 апреля 2014 г.): http://commons.apache.org/proper/commons-ognl/ Он был там некоторое время, но сегодня я снова заметил этот случайный поток.

person jkuhnert    schedule 11.01.2011
comment
Эм... эта страница просто ссылается на opensymphony.com - person skaffman; 12.01.2011
comment
SVN находится здесь. На данный момент (2011-05-226) релизов не было. - person Heathen; 26.05.2011
comment
@schnitz О чем ты говоришь? commons.apache.org/proper/commons-ognl - person jkuhnert; 04.04.2014
comment
… OGNL не (полностью) мертв … @jkuhnert, вы или кто-либо еще хотите сообщить обновленную информацию о статусе OGNL в 2020 году? Сейчас он по крайней мере бездействует, нет? - person Garret Wilson; 21.12.2020