从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之间的对比:
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 @Nameor inclusion in XML descriptor |
相关文章推荐
- 深入理解Java中static关键字的使用
- 使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置
- 使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
- 使用IntelliJ IDEA开发SpringMVC网站(五)博客文章管理
- 从storm-jdbc谈谈component的生命周期
- 纪念博客开通
- Html DOM、Ext Element及Component三者之间的区别(Ext入门基础)
- java EE JSP运行出现错误
- The java ee tutorial 学习记录
- JAVAEE学习笔记
- 我需要下载哪个版本的eclipse?
- 配置maven版本出错
- Jboss Seam的注解
- Seam中使用selectItems and @Factory的三种方法
- 利用Ajax构建JSF事件驱动
- rich:dataTable中链接传参数不起作用的问题
- 遍历map的几种方式
- OWASP 10 大 Web 安全问题在 JEE 体系完全失控
- 如何编译Glassfish v3 Open Source
- seam游戏