JavaEE6规范CDI教程第一部分
1. 引言
此教程讲述DI(依赖注入),并且涵盖了CDI(上下文依赖注入)的一些特性,比如类型安全注解配置、替换选择等内容。
CDI是依赖注入(DI)和拦截(AOP)的Java标准规范。DI和AOP有着很高的知名度,Java需要处理DI和AOP以便在此之上构建其它的标准。DI和AOP是很多Java框架的基础。
CDI是JavaEE 6的基础。它很快就得到了Cauchos Resin、IBMs WebSphere、Oracles Glassfish、Red Hats JBoss和众多应用服务器的支持。CDI与Spring和Guice框架非常相似,就像JPA很像ORM。CDI简化了对于DI和AOP的API。如果你使用过Spring或者Guice,你会发现CDI更容易学习和使用。如果你是依赖注入(DI)的新手,那么CDI能让你迅速理解DI。CDI更容易学习和使用。
CDI能够独立使用也能嵌入的任何应用中。
这个教程在发布三年之久的Spring 2.5 DI 教程(使用Spring “new” DI 注解)之后出现并不奇怪。它将有趣的对比三年前缩写的Spring DI注解。
2. 本教程设计目标
本教程的目标是描述和解读不包含复杂的EJB3.1和JSF的DI和CDI。
CDI的优势是能够在EJB和JSF之外。本教程只关注CDI。再次声明在本教程中没有JSF2和EJB3.1的内容。很多文章和教程都涵盖如何使用CDI(JEE6规范)。本教程并不是,这里只是CDI。
本教程有完整的代码示例,你可以下载试用。
我们将放缓速度,逐步的从基础开始。一旦你理解了基本原理,我们会适当的加快脚步。
所有的示例代码都以确保能够运行。我们不会键入临时代码,如果代码不能运行,那它就不属于本教。
示例代码都有清晰的标题,所以你可以把教程看做一个菜单,将来你如果想使用CDI DI的某些特性,可以方便的在菜单目录中查找示例。
装饰器、扩展、拦截器、范围都不在本教程的范围之内。
如果这个教程通过google讨论组收到足够的反馈和评论,我将加入CDI AOP(装饰器和拦截器)综合教程还有扩展。
更多的建议和反馈会鼓舞我做的更好。
3. 依赖注入
依赖注入(DI)是为软件组件提供扩展依赖的过程。DI能够让你的代码架构很简洁。
它帮助你用测试驱动开发的方式设计接口,提供统一的方式注入依赖。例如,一个数据访问对象(DAO)可能依赖一个数据库连接。
取而代之,使用JNDI查找数据库连接,你不需要注入它。
考虑到JNDI是彻底的翻查,DI框架取代对象查找其它准备好的对象(依赖的),一个DI容器能注入这些依赖的对象。这被成为“好莱坞原则”,“不要给我打电话(查找对象),我会打给你(注入对象)”。
如果你接触过CRC卡,你能想象出一个依赖就像一个合作者。一个合作者是一个对象,另一个对象需要R
补充:软件开发 , Java ,