Talk about DI again
再谈依赖注入
理解了控制反转和依赖注入的基本概念之后,就可以了解一些实际的应用了。在《Java程序员修炼之道》第三章,作者深入剖析了依赖注入的技术背景和应用实例。
主要内容包括:
- 控制反转和依赖注入
- 掌握依赖注入技术为什么如此重要
- JSR-330如何统一了Java中的DI
- 常见的JSR-330的注解,如@Inject
- Guice 3简介,JSR-330的参考实现
其中,一些值得注意的重点是:
- 依赖注入的好处:松耦合、易测性、更强的内聚性、可重用组件、更轻盈的代码
- 实际的例子带领读者从不用DI的代码变成使用工厂(或服务定位器)模式的代码,再变成使用DI的代码,是一个不断重构的过程,用到的关键技术是面向接口编程。和Martin Fowler的论述有相似之处。可能对于有经验的Java程序员,最后得到的依赖注入代码是自然而然的。
- Java标准化DI的由来 JSR-330 & JSR-299
- 注解:@Inject,@Qualifier,@Named,@Scope,@Singleton以及接口Provider<T>
- Java中DI的参考实现:Guice 3及其详细介绍
总之,了解依赖注入(DI)在现代Java开发中,尤其对于设计解耦和理解容器中很有帮助,我们不仅要知道其原理和益处,更要熟悉其使用场景和方法。
接下来
- 有时间的话,接下来要探索一下Guice 3的用法和例子,同时了解一下Spring中DI的使用方法。
- 还有一个问题,除了Java之外,DI在其他语言中是如何应用的呢?(NodeJS的入门教程也提到了Martin Fowler的文章)
- 除了DI之外,面向对象的其他原则是否在新的Java语言规范中提供支持?