什么是IoVC

什么是IoVC

什么是IoVC

    IoVC是 Inversion of View Control的缩写,意思是视图反转控制,是AOM的核心特性之一,IoVC实现了将对UI的控制力转移到ManagedBean中,UI完全不关心谁会来使用它本身,也不需要关心在上面所展现的数据内容是什么,从而实现了UI与控制逻辑的完全分离,简言之,IoVC是一种更高层次的MVC。

    初一看,IoVC好像也没什么特别的,甚至有点概念炒作的嫌疑,但是真正使用它、理解它之后,你会发现,它所提供的编程模型为你的开发带来了实质性的帮助。

IoVC带来了什么

    IoVC提供了“绑定”、“多语言支持”、“资源注入”、“逻辑事件”等特性,这些特性主要作用在ManagedBean上面,ManagedBean是位于UI与业务服务之间的协调者,基于这些特性,在ManagedBean中,一方面可以对UI实现完全的控制,另一方面,可以灵活自然的与业务服务进行交互。

托管Bean的简化

    传统方式中,编写一个ManagedBean,需要编写faces-config.xml文件,例如编写两个ManagedBean,UserBean与DepartmentBean,其中UserBean需要引用DepartMentBean,需要采用下面的方式来声明faces-config.xml文件:
   < managed-bean >
    
< managed-bean-name > DepartmentBean </ managed-bean-name >
    
< managed-bean-scope > session </ managed-bean-scope >
    
< managed-bean-class > demo.DepartmentBean </ managed-bean-class >
  
</ managed-bean >

  
< managed-bean >
    
< managed-bean-name > UserBean </ managed-bean-name >
    
< managed-bean-scope > session </ managed-bean-scope >
    
< managed-bean-class > demo.UserBean </ managed-bean-class >
    
< managed-property >
      
< property-name > departmentBean </ property-name >
      
< property-class > demo.DepartmentBean </ property-class >
      
< value > #{DepartmentBean} </ value >
    
</ managed-property >
  
</ managed-bean >

    IoVC提供了@ManagedBean、@ManagedProperty、@MapEntries、@ListEntries等关于ManagedBean定义的一整套完整的标签,上面的定义,在IoVC中将会转变为如下方式直接声明在代码中,无需维护faces-config.xml文件:
@ManagedBean
public   class  DepartmentBean
{
    
}

@ManagedBean
public   class  UserBean
{
    @ManagedProperty(
" #{DepartmentBean} " )
    
private  DepartmentBean departmentBean;
    
}

关于IoVC剩余的几个特性的支持的描述,我将会陆续写一些文章来进行深入介绍。

在把“IoVC是什么、IoVC能够做什么”这些基本问题解释清楚后,我计划探讨一下“IoVC是怎么实现的?”,以及“为什么有了IoVC之后,组件的无状态就可以变成可能?”等问题。

绑定(Binding)

  

资源注入 (Injection)

  

多语言支持

   

逻辑事件

   

“无状态组件”的传说

你可能感兴趣的:(什么是IoVC)