由来
如果实现类改变,需要在业务层的每个类里面修改,违背松耦合的特点。
思路一:
中间加一个工厂,工厂返回一个实现类给你,这种方法虽然业务层不用每个修改,但如果使用别的实现类,也需要指定工厂返回哪个实现类。
思路二
如果交给spring管理,配置文件里面的id名字自己取,id对应一个类的全路径,通过spring工厂根据id获得实现类的全路径,通过反射创建这个类交给你,此时,如果你的业务层需要换成别的实现类,业务层不用修改,只需要把配置文件id对应的那个类的全路径替换成你需要的类的全路径。
DI:依赖注入
给spring管理类当中的依赖的属性,通过配置文件进行赋值的过程。
传统方式:接口 变量 = new 实现类,变量.实现类当中的属性=多少,无法赋值