无聊的代码:
//job用户在库中获取数据形成 public void jobInc(Job job) { .... job.inc(); .... .... }
第三类依赖注入其实就是普通参数注入。这种方式主要带有实时性。当运行到方法时才能决定是否引用的情况都应该用这种注入方式。
典型的如运行时回调方式。系列化中有很好的例子。
spring这种主要用 第一 第二类依赖注入的方式。这种方式的特点是在运行前就建立依赖关系。由于java是静态语言(非脚本语言)所以这种特性非常有用。本质上将对象之间的依赖关系的建立时间与使用依赖关系的调用时间分离,形成两个阶段。开发者可以更清晰的理解,依赖建立与使用依赖两种不同的程序概念。让业务开发者注重依赖的使用,而由技术架构人员负责对象关系。这个也是 spring这类框架的核心意义。这种更高层次意义也促使spring生命力远大于orm或mvc为核心的其他框架。
这里划胖一下,这个概念其实5年就理解了。只是实践太少。每每都已经很有想法了,但是要等到热情过后才有机会与人共享,因为之前或无人理解或取法梳理习惯。
继续深入。js这种脚本语言是否需要第一类第二类? 答案是在js中基本不能生存。因为脚本语言本质上就是要提供动态性,运行期变化。比如js中的闭包与函数参数,eval表达式等。所以另一方面看,个人认为,spring配置中集成脚本基本也没有实际意义。spring配置中的脚本失去了本身的动态性。
其实,最好的做法是spring集成脚本引擎而不是脚本内容。ioc框架本来也就是做这个的,关联中型技术模块用。