Подтвердить что ты не робот

Почему существуют разные аннотации управления bean

В чем разница между

import javax.annotation.ManagedBean;
import javax.enterprise.context.SessionScoped;

и

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

?

4b9b3361

Ответ 1

  • javax.enterprise.context.SessionScoped (JSR 346), а все остальные аннотации в пакете javax.enterprise.context.* поддерживают контекст CDI. CDI предоставляет альтернативный, универсальный и более мощный механизм для инъекций зависимостей, bean и общего управления ресурсами в пространстве Java EE. Это альтернатива JSF, управляемая beans, и она установила возможность даже заменить механизм управления JSF bean в предстоящей версии JSF.

    В настоящее время JSF и CDI, аннотированные beans, взаимозаменяемы в любом данном веб-приложении Java EE (учитывая несколько незначительных ограничений). CDI, аннотированный beans, однако, выходит далеко за пределы области веб-уровня, поэтому спецификация Java EE развивается, чтобы сделать CDI стандартным механизмом bean и DI.

    Хотя CDI может быть очевидным выбором для всей разработки Java EE, управляемые JSF beans являются переносимыми в контейнерах сервлетов (Tomcat) и серверах приложений (Glassfish, JBoss и т.д.). CDI beans может работать только с полными серверами приложений. С некоторые новички, однако Tomcat 7 может быть подключен для поддержки CDI.

    В частности, javax.enterprise.context.SessionScoped - это параллельная реализация области сеанса JSF в CDI.

  • javax.faces.bean.SessionScoped (JSR 314), а все остальные аннотации в пакете javax.faces.bean.* поддерживают JSF-специфичную инъекцию зависимостей и bean механизм управления. beans, аннотированные аннотациями JSF, однако полезны только в пределах веб-уровня. Все области, доступные с аннотациями JSF, были реплицированы в спецификации CDI.

  • javax.annotation.ManagedBean (JSR 316) и другие связанные с DI аннотации в разделе javax.annotation.* являются попыткой обобщения JSF- основанные на аннотациях для других применений в спецификации Java EE и на самом деле не должны использоваться конечным разработчиком.

Почему они существуют? Ну, ИМО, переход от JSF beans к CDI beans - это естественная эволюция технологии. JSF beans провели хороший прогон, но, как и Spring, Guice и Seam сделали очевидным, что технологии недостаточно. Необходимо также устранить разрыв между веб-компонентами и EJB, и ответ на эту потребность - это CDI.

См. также следующие связанные вопросы: