Spring по сравнению с EJB. Spring может заменить EJB? [закрытый]

Это не связывает .sh файлы, но это могло бы получить Вас, что Вы хотите. Я запустил с пакетного файла cygwin.bat, который запускает оболочку удара Cygwin и изменил ее как так:

$ cat test.bat
@echo off

set MYDIR=C:\scripts

C:\cygwin\bin\bash --login -c "cd $MYDIR && echo 'Now in' `pwd`; sleep 15"

Это - игрушечный сценарий, но Вы могли изменить его, чтобы назвать rsync или назвать отдельный сценарий оболочки. Я признаю, что было бы более хорошо, если бы это не имело MYDIR трудно кодированным. Существует проребенок, путь действительно заставляет его автоволшебно устанавливать это.

, О, да, когда я создал .bat файл в оболочке удара в Cygwin, я заметил, что имел к на самом деле "chmod +x test.bat", прежде чем я мог запустить его двойным щелчком. Я думаю, что это - полномочия установки NTFS. Вы не должны были бы делать этого, если бы Вы просто использовали блокнот.

96
задан sal 23 November 2009 в 02:02
поделиться

3 ответа

Spring был разработан как альтернатива EJB с самого начала, поэтому ответ, конечно же, вы можете использовать Spring вместо EJB.

Если есть «преимущество» в использовании EJB. Я бы сказал, что это будет зависеть от навыков вашей команды. Если у вас нет опыта в Spring и большой опыт работы с EJB, то, возможно, стоит придерживаться EJB 3.0.

Серверы приложений, написанные для поддержки стандарта EJB, теоретически могут быть перенесены с одного совместимого сервера приложений Java EE на еще один. Но это означает, что нужно держаться подальше от любых расширений, зависящих от производителя, которые привязывают вас к одному поставщику.

Spring легко переносит между серверами приложений (например, WebLogic, Tomcat, JBOSS и т. Д.), Потому что он не зависит от них .

Однако вы заперты в Spring.

Spring поощряет хорошие методы объектно-ориентированного проектирования (например, интерфейсы, уровни, разделение проблем), которые приносят пользу любой проблеме, с которой они сталкиваются, даже если вы решите переключиться на Guice или другую структуру DI.

Обновление: этому вопросу и ответу пять лет в 2014 году. Надо сказать, что мир программирования и разработки приложений сильно изменился за это время.

Это уже не просто выбор между Java или C #, Spring или EJB. С помощью vert.x можно полностью отказаться от Java EE. Вы можете писать хорошо масштабируемые, s больше не просто выбор между Java или C #, Spring или EJB. С vert.x можно полностью отказаться от Java EE. Вы можете написать хорошо масштабируемый, s больше не просто выбор между Java или C #, Spring или EJB. С помощью vert.x можно полностью отказаться от Java EE. Вы можете написать хорошо масштабируемый, приложения-полиглоты без сервера приложений.

Обновление: март 2016 г. Spring Boot предлагает еще лучший способ писать приложения без серверов приложений Java EE. Вы можете создать исполняемый JAR и запустить его на JVM.

Интересно, продолжит ли Oracle поддерживать спецификацию Java EE. Веб-сервисы пришли на смену EJB. Решение EJB мертво. (Только мое мнение.)

201
ответ дан 24 November 2019 в 05:33
поделиться

Очки Паскаля действительны. Однако в пользу Spring есть следующие аргументы:

  • Спецификация EJB на самом деле немного свободна, и поэтому на разных серверах приложений можно наблюдать разное поведение. Конечно, в большинстве случаев это не так, но у меня была такая проблема с некоторыми "темными углами".

  • В Spring есть много дополнительных плюсов, таких как Spring-test, AOP, MVC, интеграция с JSF и т.д. EJB имеет некоторые из них (например, перехватчики), но, на мой взгляд, они не так уж и развиты.

В заключение, это зависит в основном от вашего конкретного случая.

22
ответ дан 24 November 2019 в 05:33
поделиться

Во-первых, позвольте мне четко сказать: я не говорю, что вам не следует использовать Spring, но, поскольку вы просите о некоторых преимуществах, вот как минимум два из них:

  • EJB 3 является стандартом, а Spring - нет (это стандарт де-факто, но это не одно и то же), и в обозримом будущем это не изменится. Хотя вы можете использовать среду Spring с любым сервером приложений, приложения Spring привязаны как к самой Spring, так и к конкретным службам, которые вы выбираете для интеграции в Spring.

  • Среда Spring находится поверх серверов приложений и библиотек служб. Код интеграции службы (например, шаблоны доступа к данным) находится в структуре и доступен разработчикам приложений. Напротив, каркас EJB 3 интегрирован в сервер приложений, а код интеграции сервиса инкапсулируется за интерфейсом. Таким образом, поставщики EJB 3 могут оптимизировать производительность и удобство разработки, работая на уровне сервера приложений. Например, они могут тесно связать механизм JPA с управлением транзакциями JTA. Другой пример - поддержка кластеризации, которая прозрачна для разработчиков EJB 3.

EJB 3 не идеален, в нем все еще отсутствуют некоторые функции (например, внедрение неуправляемых компонентов, таких как простые объекты POJO).

48
ответ дан 24 November 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: