Spring的依赖注入原理,我的理解为:在xml配置文件中,“构造”对象。用引号的原因在于,在这里并不是真正的构造。只有当我们通过ApplicationContext来加载xxx.xml文件时,这些类的对象才会被真正构造。
然而,如何构造呢?简单的来说,Spring通过调用类的构造函数进行构造。构造函数大体分两种:默认构造函数与带参数的构造函数。也就是说,Spring中通过依赖注入来构建对象的最终方法依旧是通过:类的构造函数来完成,与我们手工通过new来构造对象,并没有什么不同。
Spring的DI大体分为两种:显示构造函数DI与setter方法DI。等等,不是说,都要用构造函数(反射除外)来构造对象吗?setter方法也可以构造对象?
首先,setter方法不能构造对象,它只能修改对象的属性而已。那为什么Spring存在setter方法DI呢?其实,当采用setter方法DI时,Spring先调用的类的默认构造函数,先生成一个对象,然后调用该对象的setter方法,来修改对象的属性值。所以,采用setter方法DI时,该类必