首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF中的托管beans

JSF中的托管beans
EN

Stack Overflow用户
提问于 2012-01-08 01:11:00
回答 1查看 396关注 0票数 2

我正在阅读有关JSF的文章,我有一个关于托管bean的问题。“托管”只是指JSF实现实例化和管理其生命周期这一事实吗?现在新的事情是使用CDI,这是一个处理实例化及其生命周期的不同实现?这就是托管的意思吗?

CDI是一个能够实例化bean并在JSF之外管理它们的实现吗?这就是为什么它更好的原因?如果是这样的话,在JSF之外还有什么选择呢?每个容器或实现都有自己的bean管理方式吗?CDI是统一这一点的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-08 10:57:21

在JSF2注解之前,在JSF1中,开发人员必须在faces-config.xml中将bean注册为<managed-bean>。这个支持仍然存在于JSF2中,但是在某些情况下,如果你想要覆盖打包在第三方JAR中的托管bean的注释,它可能是唯一的方法。

在JSF和CDI出现之前很久,在plain JSP/Servlet中,开发人员必须手动创建和管理bean本身,方法是显式地实例化它们,并通过以下方式显式地将它们放在请求、会话或应用程序范围中

代码语言:javascript
复制
request.setAttribute("requestScopedBean", requestScopedBean);
request.getSession().setAttribute("sessionScopedBean", sessionScopedBean);
getServletContext().setAttribute("applicationScopedBean", applicationScopedBean);

(预检查被省略了,如果bean还不在作用域中,它当然只会被放在作用域中,否则它将被重用)

请注意,上述内容正是JSF“在幕后”所做的事情。

然后,各种MVC框架被发明出来,通过在XML文件中声明bean,甚至通过注释来抽象这一点。每个MVC框架都有自己的bean管理方式。然后是Spring,它试图通过提供一种独立于框架的方法来统一它。然后出现了Java EE 6 CDI,它对它进行了标准化。

这一切都是独立于容器的。它是特定于框架的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8771465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档