概述
如果说EJB,JPA是之前JEE(JEE5及JEE5之前)中里程碑式的规范,那么在JEE6,JEE7中CDI可以与之媲美,CDI(Contexts and Dependency Injection),即上下文依赖注入,它是众多JEE规范中的一个,从JEE6开始CDI正式成为JEE规范,但CDI相关的概念不是新的,依赖注入的概念已经存在了许多年,相关的流行框架包括Spring,Google Guice等。目前CDI规范的实现主要有 JBoss Weld,Apache OpenWebBeans 和 Caucho CanDI,我们随后系列都是基于JBoss Weld进行。
由Java Community Process介绍的Java Specification Request 299(JSR 299)的最终规范在2009年12月形成,JSR 299正式定义CDI为JEE规范。在同一个月JSR 299在JSR316中被定义为JEE6平台的一部分。这意味着,每个被认证为JEE6兼容的应用程序服务器必须默认支持上下文和依赖注入。 为了完整起见,我们应该指出,CDI相关的依赖注入是在Java SE 规范JSR 330的基础上进行的。如下为CDI相关的JSR链接:
- JSR-299 - CDI: http://jcp.org/en/jsr/summary?id=299
- JSR-316 - JEE 6: http://jcp.org/en/jsr/summary?id=316
- JSR-330 - DI: