Управляемые бобы в JSF - PullRequest
       9

Управляемые бобы в JSF

2 голосов
/ 07 января 2012

Я читаю на JSF, и у меня есть вопрос об управляемых бинах. Относится ли «управляемый» только к тому факту, что реализация JSF создает и управляет своим жизненным циклом? И что теперь нового в том, чтобы использовать CDI, который является другой реализацией, которая управляет реализацией и их жизненным циклом? Это то, что значит под управлением?

Является ли CDI реализацией, способной создавать экземпляры bean-компонентов и управлять ими вне JSF, поэтому лучше? Если да, то что было до выхода вне JSF? У каждого контейнера или реализации был свой способ управления bean-компонентами? И является ли CDI тем, что объединяет это?

1 Ответ

2 голосов
/ 08 января 2012

Перед аннотациями 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, который стандартизировал его.

Все это всегда было независимым от контейнера.Это зависит от фреймворка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...