博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从JBoss Seam 2.x迁移到JavaEE 7之一:组件模型
阅读量:4178 次
发布时间:2019-05-26

本文共 884 字,大约阅读时间需要 2 分钟。

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

 

转载地址:http://ejlai.baihongyu.com/

你可能感兴趣的文章
java进程占用CPU过高
查看>>
CSDN-markdown编辑器
查看>>
拷贝整个目录到另一台服务器并排除log目录
查看>>
拜托,面试别再问我跳表了!
查看>>
linux驱动实例
查看>>
android ArrayList<String> 转 String[]
查看>>
RecyclerView baseadapter
查看>>
Android中应用程序如何获得系统签名权限
查看>>
MPAndroidChart 动态更新
查看>>
Recycler表格(excelPanel)
查看>>
android一行代码实现沉浸式布局效果
查看>>
json, recyclerView问题
查看>>
cmake处理多源文件目录的方法
查看>>
Service Intent must be explicit
查看>>
android studio SDK开发
查看>>
studio 统计代码的行数
查看>>
字符数组和16进制互换
查看>>
PHP项目中出现致命错误: Class 'Redis' not found
查看>>
There is no tracking information for the current branch.
查看>>
fatal: refusing to merge unrelated histories
查看>>