您的位置:首页 > 编程语言 > Java开发

从JBoss Seam 2.x迁移到JavaEE 7之一:组件模型

2016-05-05 23:39 477 查看
JBoss Seam中的Component可以是如下类型的POJO:

Java Bean
EJB 3.0无状态会话Bean
EJB 3.0有状态会话Bean
EJB 3.0消息驱动Bean
JPA实体Bean
Spring Bean

 

JavaEE 7 CDI支持如下类型的Bean:

Managed Bean
EJB会话Bean
EJB消息驱动Bean
Producer的方法和字段
各种资源,如JavaEE Resources、持久化上下文、持久化单元、远程EJB和WebServices

 

JavaEE 7 CDI的Managed Bean就是一个Java类,Managed Bean规范中定义一个Java类是ManagedBean的条件如下:

不是非静态内部类
不是EJB组件
没有实现javax.enterprise.inject.spi.Extension接口
是具体类,或者@Decorator标注的抽象类
构造函数要么无参数,要么@Inject标注

 

JavaEE 7 CDI的Managed Bean与JBoss Seam中的Component之间的对比:

Seam 2 
component
CDI 
Managed Bean
说明
必须
@Name
标注


components.xml
中定义


无需任何标注

 

默认在EL中可用

只有
@Named
标注才能在EL中可用

双向注入

不支持双向注入

Seam 2是通过拦截器动态实现对组件方法调用的双向注入。

CDI只支持静态一次性单向注入,即在组件的生命周期中只注入一次。

配置文件seam.properties
或 components.xml

可选配置文件beans.xml

显式定义

隐式定义

every Java class in the bean archive that meets certain conditions is implicitly recognized as a managed bean

Seam 2 needs 
@Name 
or inclusion in XML descriptor

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息