CDI全称是Contexts and Dependency Injection,上下文和依赖注入。在当前的J2EE开发领域,spring无疑是最流行的依赖注入技术。这有个问题,为什么要用依赖注入?因为现在J2EE的开发,大部分都是利用MVC模型进行开发的。MVC开发中就会有分层问题,控制器层要调用service层,service层要调用dao层。那么就存在一个装配问题,就是将dao层的对象装配到service对象中,将service层对象再装配到controller层里面。如果使用传统的方式,new一个对象,然后用set方法装配,造成了高度的耦合,程序无法解耦。流行的方式就是将dao对象,service对象,controller这些对象全部交给容器来管理,由容器来解决这些对象之间的依赖问题。容器底层使用发射来创建对象,并使用反射来注入对象,这样实现类解耦,将来修改依赖时只要修改配置就够了,无须改动代码。
J2EE 7的CDI技术就是诞生在这种背景下的。目前J2EE7规范中CDI的版本是1.1<