分享

Managed Bean

 孤独求学者 2011-02-23

什么是Managed Bean

Managed Bean,又称托管Bean,是JSF框架中由框架负责管理其生命周期的一种[JavaBean]。Managed Bean是JSF中[依赖注入]功能的主要对象,它的创建、初始化、销毁等生命周期行为都由框架负责完成。用户通常通过[EL表达式]或在[部署描述文件]中定义依赖注入规则来获得对Managed Bean的引用(而不是自己去new一个Managed Bean的实例)。

通常,JSF框架使用惰性策略来创建和初始化Managed Bean。这意味着,一个定义在某特定[有效域]的Managed Bean,并不是在这个[有效域]创建时同时被创建,而是在实际需要引用它的时候才被创建。

在AOM中,Managed Bean被称为Lite Bean。从AOM 2.0开始,对Managed Bean 做了大量的扩充,最终演化成了目前的LiteBean。LiteBean 是 AOM 中非常重要的一个概念,它即是展现层与业务层之间的粘接器,同时也是 AOM 与其它成熟编程模型的粘接器,如 Spring、EJB 3 等。

标准JSF中用户如何管理Managed Bean

AOM中如何用户管理Managed Bean

Managed Bean与Backing Bean的差别

Backing Bean是Managed Bean在JSF框架中扮演的角色之一。这个角色的职责是在服务器端逻辑中代表特定的页面和它之上的组件,作为页面行为逻辑的容器(或称控制器)。通常Backing Bean会放在[Request Scope]中,但并不强制如此。在AOM目前版本中(2.2M1),如果页面中存在一些大型交互式组件(例如<w:tree><w:datagrid>),则持有这些组件实例的Backing Bean必须在[Session Scope]中。

值得注意的是,在JSF编程模型中,并不是所有Managed Bean都作为Backing Bean而存在的。视用户的分层粒度而定,Managed Bean可以分为只包含业务逻辑(非Backing Bean),或只包含页面行为逻辑(充当控制器的Backing Bean),或包含了一定业务逻辑逻辑的Backing Bean(当用户不明确区分模型逻辑和UI控制逻辑时)。换而言之,对应到[MVC]架构,在JSF中,M(模型)与C(控制器)的角色都由Managed Bean充当,其中,充当C(控制器)的Managed Bean就是Backing Bean。

(参考:区别JSF中不同种类的Managed-Bean

Managed Bean与页面的对应关系

标准JSF中并不存在Managed Bean与页面对应关系的概念,这是因为标准JSF完全通过在页面中使用[EL表达式]的方式来进行页面与Managed Bean的绑定。每一条EL表达式都明确指定了所引用的Managed Bean。

但在AOM中,由于存在[IoVC]特性,需要指定与页面对应的Managed Bean。这可以通过以下任意一种方式来实现:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多