2011-01-11 4 views
9

мне было интересно, что именно переехал Spring использовать Spring EL над OGNL в своем продукте веб-потока:Преимущества использования 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?

ответ

15

Ну, "почему" говорится в SpEL docs:

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

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

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

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

+0

Принято. Кстати, я узнал, что вы можете напрямую использовать новый оператор весной EL, так что да, вы можете создавать объекты! Потрясающие. – MetroidFan2002

+0

@ MetroidFan2002: сходство между Unified EL и SPEl является лишь поверхностным. SpEL намного, гораздо выразительнее и мощнее, просто используется аналогичный синтаксис. – skaffman

1

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

https://github.com/jkuhnert/ognl

Итак, есть. pfffttttttt

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

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

+0

Um ...эта страница просто ссылается на opensymphony.com – skaffman

+0

Страница статуса [здесь] (http://incubator.apache.org/clutch.html) – Heathen

+0

SVN [здесь] (https://svn.apache.org/repos/ АФС/инкубатор/OGNL /). На данный момент (2011-05-226) релизов не было. – Heathen