JEE6 CDI(Contexts and Dependency Injection)介绍
Java EE 6已经发布了很久,不过国内使用的人依旧很少,资料也很缺乏。我自己本人很看好JEE6,觉得 JSR299- Contexts and Dependency Injection 很好很强大。CDI 也就是上下文依赖注入,概念和 Spring 中的 依赖注入(DI) 一样。在JEE6中被作为一个规范后,我们使用起来就更加的方便实用了。 CDI最给力的一点就是提供了一个 Extension 接口, 允许我们对CDI进行扩展。我们可以通过实现这个接口来做实现很多非常酷的功能。包括对 Bean 的注入前后的拦截,Bean执行构造方法前后的拦截等等。通过这些我们就可以实现事务,日志等等一些功能。 目前实现 JSR-299 CDI 规范的框架有三个: JBoss Weld , Apache OpenWebBeans 和 Caucho CanDI 。 JSR-299 CDI 是 Gavin King 领导制定的,Weld 的实现也基本是由 JBoss的人员完成,所以JBoss社区比较活跃。 CDI 作为一个依赖注入的规范,它的主要的优点有下面几点: 类型安全:CDI不在通过字符串名称来注入对象,而是java类型来确定被注入的对象。当单单通过java类型还不能确定到底哪一个对象被注入的时候,你可以通过扩展 @ Qualifier 注解来限定你需要注入的对象 。 普通的Java Bean