2015-03-16 2 views
8

В настоящее время я готовлю свое окончательное исследование проекта. Я должен разработать распределенное приложение для управления человеческими ресурсами, но в своем опыте использования технологий я счел смутным выбирать между Spring или EJB 3.1.Весна против EJB (преимущество и недостаток)

Я не знаю, какая из них будет самой подходящей и простой в использовании. Я новичок в обеих технологиях, и поэтому надеюсь, что кто-то может мне помочь.

+2

http://stackoverflow.com/questions/7076144/ejb-3-1-or-spring-3-when-to-choose-which-one – elsadek

ответ

34

Вы не выбираете между EJB и Spring, вы фактически выбираете между Java EE и Spring, потому что EJB - это только часть Java EE, которая включает в себя также такие компоненты, как JMS, Servlets, JSP, JSF, CDI и т. Д. В своем (J2EE 1.4), модель корпоративного выпуска Java имела множество недостатков и недостатков, но самыми важными были то, что она была утомительной и многословной с большим количеством кодовых табличек и тоннами xml-конфигураций. Весна была представлена ​​в качестве альтернативной структуры, благоприятствующей принципу конвенции над конфигурацией. Другими словами, весной были некоторые разумные дефолты, которые можно было переконфигурировать, если вам это нужно. Java EE 5 ввел существенные изменения, приняв тот же принцип соглашения над конфигурацией от Spring, резко уменьшающий количество и сложность кода, необходимые для того, чтобы все было в порядке, поэтому в этой области Spring больше не имеет каких-либо ощутимых преимуществ.

Также важно иметь в виду, что Java EE - это всего лишь спецификация. Чтобы создать приложение для реального мира, вам нужна реализация, и их сегодня много - Glassfish, JBoss, TomcatEE и т. Д., Все это обеспечивает различные реализации спецификации Java EE, добавляющие дополнительную сложность - я имею в виду, теперь вам нужно выбрать, какая реализация Java EE выбирать. Вы можете создать это с помощью Spring, который исходит из одного источника.

Оба фреймворка дают вам практически такую ​​же функциональность. Все транзакции поддержки, ORM, предоставляют инструменты для построения бизнес-логики, поддержки CDI, АОП. В Spring и Java EE вы можете использовать только те части, которые вам нужны, другими словами, вам не нужно использовать всю инфраструктуру. Вы можете использовать их вместе - они могут взаимодействовать. Благодаря внедрению встраиваемых контейнеров теперь вы можете даже использовать функции Java EE, которые вам нужны в таких областях, как настольные приложения, которые традиционно были сферой весны.

Но в одной области, где Java EE по-прежнему не хватает весны, удобна тестируемость. Нелегко написать модульные тесты для EJB - для этого вам нужно использовать специальную стороннюю структуру (Arquillian) и написать код шаблона внутри ваших тестов (например, для создания тестового пакета развертывания и его развертывания на контейнере и т. Д. .). Фактически, Java EE не имеет никакой поддержки для тестирования EJB из коробки. Напротив, Spring настроен с возможностью тестирования и TDD. Тестирование Весенние бобы просты, так как Spring включает в себя комплектную поддержку как для тестирования (модульного тестирования, интеграционного тестирования) всех частей приложения, так и для издевательств.

+0

Благодарим вас за ответ, было очень полезно – Informatique2015

+1

Отличный ответ , Иногда кажется, что каждый раз, когда кто-то спрашивает о печально известной «весне или ejb» -последовании, он оказывается в какой-то необоснованной религиозной дискуссии –

Смежные вопросы