依赖注入的理解
依赖注入是什么:
spring官方参考文档上对依赖注入背后的基本原理描述(中文翻译):依赖注入(DI)背后的基本原理是对象之间的依赖关系(即一起工作的其它对象)只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,这也是控制反转(Inversion of Control, IoC)名字的由来。
依赖注入的本质:
把硬编码的类之间关系以配置文件的形式来规范(反射机制实现)。
对象间相互引用(即在对象中的某个方法中new一个其它对象)这应该也是一种对象之间的依赖关系的实现方式。但我觉得在方法中new一个对象,然后形成调用关系,在大多数情况下是不雅的(少数必要情况我还没有遇到过),原因有下面几处:
1、对象间依赖关系构成分散,不宜维护
这种在方法中new一个对象,缺乏统一的管理和控制,如果用这种方式,依赖构成可能分散在程序的各个角落,日后程序可读性和维护性将受到影响;
2、可能会带来频繁创建对象的损失
直接在方法中new对象,每一次方法调用,都需要一次对象构造过程;