DI

IoC/DI summary

下面的笔记根据Java私塾Spring公开视频教程整理并简化(你没看错,已经简化过了,^_^)。

IoC/DI的基本思想

  • 把程序之间的依赖关系去掉
  • 把程序对象设置到IoC/DI容器的配置中,作为Bean
  • 由IoC/DI容器(下面简称容器)来管理Bean的创建、实例化
  • 由容器把Bean之间的关系注入到需要这些关系的对象里面

Talk about DI again

再谈依赖注入

理解了控制反转和依赖注入的基本概念之后,就可以了解一些实际的应用了。在《Java程序员修炼之道》第三章,作者深入剖析了依赖注入的技术背景和应用实例。

主要内容包括:

  1. 控制反转和依赖注入
  2. 掌握依赖注入技术为什么如此重要
  3. JSR-330如何统一了Java中的DI
  4. 常见的JSR-330的注解,如@Inject
  5. Guice 3简介,JSR-330的参考实现

IoC and DI intro

控制反转与依赖注入导读

早年参加工作的时候,大家普遍说,不一定要掌握那么多语言细节,也不一定要学那么多语言,需要的时候查查书、上上网就行了,重要的是“编程思想”。好高级啊!“编程思想”这个当年流行的词儿似乎代表着“高端大气上档次”,似乎意味着掌握编程思想的人都是码农界的高富帅。呃,编程思想,嘛玩意儿?难道就是一系列系统的想法精粹,就像《毛泽东思想》吗?好像不是。后来捧读了巨著《C++编程思想》和《Java编程思想》,也没窥透所谓的思想。后来才觉着,在编程界,英文里可能就不存在思想的准确对应词吧?Idea?Thought?Thinking?Ideology?都不像。

最近在看《Java程序员修炼之道》(我最近是迷上各种“道”了),其中提到了DIP,又激起我重新厘清编程思想的机会。现在想来,编程,或者说程序设计的思想,应该可以归在设计方法学之下,即有了某种方法,按照这种方法去思考问题、构建软件和设计程序,就是这种方法的思想,比如面向过程的设计思想,或面向对象的设计思想。现在,我们也可以说面向组件的设计思想,或者是面向云的设计思想,甚至是用户体验至上的设计思想。我们不自觉地从“编程”思想演进到“设计”思想了,思想总算正本清源,设计需要思想,而编程只是设计的结果。设计在哪儿?设计无处不在。软件设计从需求获取阶段就已经开始,直到程序员编写每一行代码都贯穿始终,只是体现在设计的不同层面而已。所以,程序员的80%的工作都是在设计(Think&Design),而只有20%的时间是在编程(Programming)。