Перед аннотациями JSF2 в JSF1 разработчики должны зарегистрировать бины как <managed-bean>
в faces-config.xml
.Поддержка все еще существует в JSF2, но она стала необязательной и в некоторых случаях может быть единственным способом переопределить аннотации управляемого компонента, упакованного в сторонний JAR.
Задолго до JSFи CDI, в простой JSP / Servlet , разработчики должны сами вручную создавать и управлять bean-компонентами, явно создавая их экземпляры и явно помещая их в области запросов, сеансов или приложений с помощью
request.setAttribute("requestScopedBean", requestScopedBean);
request.getSession().setAttribute("sessionScopedBean", sessionScopedBean);
getServletContext().setAttribute("applicationScopedBean", applicationScopedBean);
(предварительные проверки опущены, бин, конечно, помещается в область видимости только в том случае, если он еще не находится в области видимости, в противном случае он будет использоваться повторно)
Обратите внимание, что приведенное выше является именно тем, что JSFделает "под одеялом".
Затем были изобретены различные инфраструктуры MVC, чтобы абстрагироваться от этого путем объявления bean-компонентов в XML-файле или даже аннотациями.Каждый MVC-фреймворк имеет свой собственный способ управления bean-компонентами.Затем был Spring, который попытался унифицировать его, предоставив независимый от фреймворка подход.Затем был Java EE 6 CDI, который стандартизировал его.
Все это всегда было независимым от контейнера.Это зависит от фреймворка.