Spring или CDI или EJB3
Я довольно новичок в концепции внедрения зависимостей, и в настоящее время мы пишем веб-приложение с использованием JSF и, возможно, Primefaces. В настоящее время мы оцениваем, использовать ли Spring или EJB3. Я был очень близок к выбору Spring, но потом услышал о CDI. Можете ли вы дать нам несколько советов, которые могут быть лучшими в следующей ситуации:
В настоящее время мы довольно новички в мире J2EE и не знаем, будем ли мы использовать Glassfish или JBoss (или можем просто придерживаться Tomcat).
Веб-приложение в основном является прототипом корпоративного CRUD-приложения, которое должно уметь обрабатывать сложную бизнес-логику. Мы хотим сосредоточиться на "адаптивности", так как некоторые требования не ясны и будут определены примерно через год (когда мы узнаем, сможем ли мы все еще использовать прототип).
Мы не можем использовать Hibernate, поскольку нам придется писать довольно сложные операторы SQL. В настоящее время мы получили хороший опыт работы с абстракцией SQL в Spring.
Может быть, я сейчас сравниваю яблоки и апельсины, но информации слишком много, если вы новичок в j2ee. Я думаю, что EJB - это стандарт, определенный с помощью JCP, Spring - это стандарт, определяемый рынком, а CDI - это стандарт, который также определен JCP, чтобы делать то, что может делать Spring. Но я, безусловно, ошибаюсь;-).
Спасибо,
iuiz
1 ответ
Линкольн Бакстер отлично объясняет технические различия в этой статье: http://ocpsoft.com/java/spring-to-java-ee-a-migration-guide-cdi-jsf-jpa-jta-ejb/ Длинная история кратко: и Spring, и CDI смогут обеспечить внедрение зависимостей. Один из них - это стандарт Java EE, другой - общеизвестная технология. Glassfish и JBoss без проблем запускают приложения Spring и CDI. Если вы не можете использовать Hibernate, вы не можете использовать собственный SQL в Hibernate. Сохраните вашу команду, если сможете, много лишнего простого кода CRUD.