Java EE 6简介

Java EE 6中最惹人注意的就是上下文和依赖注入规范(Context and Dependency Injection, CDI)-JSR299。

其中最重要的概念是Managed Bean。没错,就是这个称谓。有的开发者可能会问:先前JSF规范中不就有Managed Bean么?Java EE 6中的Managed Bean和JSF1.0中Managed Bean有本质区别。JSF1.0为了和业务层打交道,必须留个尾巴出来和EJB打交道,认为添加了Managed Bean/Backing Bean一层。而这层是完全不必要的,是胶水代码。熟悉JBoss Seam的开发者很能体会JBoss Seam组件是如何干掉Managed Bean直接在表现层使用EJB的(当然前提是这些EJB被声明为Seam组件)。

Java EE 6中的ManagedBean就好像JBoss Seam的组件一样,试图一统Java EE模型。也就是说,EJB也可以通过@ManagedBean注释声明为ManagedBean, 开发者不用写胶水代码了。

有了Managed Bean就不用EJB了么?当然不是,ManagedBean根本不管事务,安全,消息,远程访问等方面的事情。这些还要靠EJB。

上下文的管理也就是状态的管理是CDI最核心的部分, Gavin King一直强调CDI不仅仅是所谓的依赖注入!估计是和JSR330的Lead Rod Johnson又干上了。平心而论,我很怀疑Rod Johnson加入Java EE专家组的动机,这家伙除了搞了一个JSR330之外没啥事,而且开发者可以看一下JSR330:啥也没有,只有一堆抽象的接口定义,晕倒!Spring是来捣乱的啊。

无论如何,上下文的管理是Spring所没有的,因为Spring是无状态框架。而Gavin King极力鼓吹JBoss Seam这样的有状态框架。对于开发者来说,说实话,我从来没有见过完全无状态的应用, Google Search是个例外:).

CDI定义的Scope如下:

  1. Dependent, 顾名思义,注入的Bean的范围依赖于目标Bean
  2. ApplicationScoped, 和Servlet的Application对应
  3. RequestScoped, 和Servlet的HTTP Request对应
  4. SessionScoped, 和Servlet的HTTP Session对应
  5. ConversationScoped, 熟悉JBoss Seam的开发者不会陌生吧?JBoss Seam最大的创新之处之一!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值