Java 依赖注入

  • Craig Wickesser
  • 张龙

2009 年 5 月 25 日

话题:Java语言 & 开发文化 & 方法

过去的几年间,GoogleSpringSource分别通过其开源项目GuiceSpring Framework提供了依赖注入的功能。然而直到现在开发者也没有一种标准的、独立于供应商的方式从而无需修改其源文件就能在这些框架之间进行切换。但时过境迁,如果一切顺利的话一些核心的依赖注入注解和接口将会添加到 Java SDK 中。

就在几周前 Google宣布了其与 SpringSource 的合作:

此次合作的目的在于标准化一套经过实践检验的、没有争议的注解,以便使那些被注入的类能够在这两个框架间进行移植。

本周初一个官方的提议(JSR 330:Java 依赖注入)已经提交给了JCP(Java Community Process)。该提议表明此 JSR 的目标在于 Java SE 平台,至少是 5.0 版本,但同时也希望为 Java EE 中的依赖注入打下一个良好的基础。最先提出的一套注解包括:

  • @Inject –  用于标识注入的构造方法、方法及属性

  • @Qualifier - 用于标识限定的注解

  • @Scope - 用于标识范围的注解

  • @Named - 基于字符串的限定

  • @Singleton - 表明被注解的类型只会被实例化一次

整个过程,从最初的注解到 JSR 的提交都是开放的,这样就能充分听取社区的反馈意见。事实上,社区已经通过多个博客对此次合作、提议甚至是整件事的价值提出了各种看法。

下面是个投票系统,表明了 InfoQ 社区的看法,你也来参加吧,结果可能很有意思。

查看英文原文:Dependency Injection for Java

Java语言 & 开发文化 & 方法