Gavin King 提供 Web Beans 预览(JSR 299)反映受 Guice 启发的依赖注入特征

  • Scott Delap
  • 胡键

2007 年 9 月 28 日

话题:JavaWeb框架语言 & 开发

Gavin King 发布了即将面世的 Web Beans(JSR 299)规范的 4 部分预览(1234)。Web Beans 由 JBoss 发起,旨在填补在 JEE 5 中 Web 层和事务层之间的断层。JSR 的成员包括 Sun、Oracle 和 Google。King 表示该组件模型深深地受到了Google GuiceSeam的影响。

本系列的第一部分对该技术进行了介绍:

……Web Beans 是与两个层中的技术都兼容的组件模型。Web Beans 能与 JSF 和 EJB3 都集成,允许 EJB3 会话 Bean 扮演 JSF 管理 Bean,这样就统一了两个组件模型。此外,Web Beans 提供了会话模型和持久化上下文管理,因而解决了状态管理问题以及影响 JSF 和 JPA 的最优化事务管理问题……Web Beans 是包含业务逻辑的应用组件。Web Beans 可以被 Java 代码直接调用,或通过统一 EL 被调用。Web Beans 可以访问事务性资源。Web Beans 间的依赖自动的被 Web Beans 容器管理。大多数 Web Beans 是有状态和上下文相关的。Web Beans 的生命周期总是被容器管理……

本系列的第二部分涵盖了规范的注入、绑定标注和组件类型。支持的注入类型包含:

  • Direct Field
  • Method
  • Constructor
  • Parameter

本系列的第三部分提供了通过 XML 替代标注声明组件的例子。最后,King 论及了作用域、上下文和解析器方法。可用的作用域如下:

  • @RequestScoped
  • @SessionScoped
  • @ApplicationScoped
  • @ConversationScoped

正如被期望的,如此数量庞大的内容已有了相同数量级的评论。其中一个较为有趣的言论是:

在过去的几年间,有非常多的言论谈及 Interface 21 或许应该正式推动 Spring 框架成为 JEE 规范的一部分——只要 Rod Johnson 正式宣布对 JEE 6 的支持,这似乎是有可能的……嗯,看起来“疯狂的”Bob Lee 和 Guice 背后的团队可能已经找到了让自己抢先挤入这场聚会的后门——根据关于即将面世的 Web Beans 的新一系列的文章来看,新规范的确被 Seam 和 Guice 联合影响了……我发现这些文章有趣之处在于 Google 明显采用了 JBoss 的方式去支持 JCP——那就是,创建一个独立的产品填补 JEE 规范中的一整块,然后利用 JCP 使那个产品成为规范本身(JPA 就是前车之鉴)……

类似的评论可在这些文章本身中找到:

非常有趣——其中与 Seam 有明显的联系,但这是我第一次看到任何与 Guice 团队有牵连的东西……我不得不怀疑“Web Beans”这一术语是否准确……

King 针对它的回答:

Seam 可能最终将分成两层:1) 核心组件引擎,它将发展成 Web Beans RI   2) 框架层,它将提供所有的内置组件、JSF 组件等等……Bob 为这个规范已经贡献了极大的努力和心血。

查看英文原文:Gavin King Provides Web Beans Preview (JSR 299) Featuring Guice Inspired Dependency Injection

JavaWeb框架语言 & 开发