举个例子:
某个富人找兰博基尼定制载具,一开始他要兰博基尼最出名的Aventador:
Lamborghini lambo = new Aventador();
Rich richOne = new Rich();
richOne.purchase(lambo);
有一天,富人觉得Aventador不够大,要辆SUV:Urus
那兰博组装师给Aventador开瓢,按Urus来做,做完还得检验下质量
**对于Java,相当于:打开源文件改,改完后还得再重新编译:**
Lamborghini lambo = new Urus();
Rich richOne = new Rich();
richOne.purchase(lambo);
临近交付了,富人又改口要兰博基尼的快艇了:
Lamborghini lambo = new boat();
Rich richOne = new Rich();
richOne.purchase(lambo);
兰博工程师、组装师:...Vaffanculo!!!
此时,兰博基尼刚好从法拉利那边挖来一个人才,小名叫Spring,他带了他的助理,名字缩写是DI,即依赖注入
Spring和其DI携手帮兰博基尼解决这个令人头大的富豪:
亚特兰蒂斯金属(applicationContext.xml),随时更改其配置,为所需产品添加或替换属性值即可**(即在java中的实现类对象的成员变量的属性值)**
按富人需求改金属属性(配置文件)即可;不再需拆车,不再伤筋动骨(解耦),大大降低工作量,这减少的工作量即为Spring + DI的好处