Spring中IOC/DI的松耦合原理
为什么使用spring就能实现松耦合? 容器管理对象,与自己new对象有什么区别?
伪代码示例:
1.比如我们需有一个add方法,需要调用某个对象(假设名字是userServiceImp)的executeAdd方法:
如果没有IOC/DI:
private UserServiceImp userServiceImp = new UserServiceImp();
public void add(){
userServiceImp.executeAdd();
}
那我们想一下,如果我们不想使用UserServiceImp的方法了,我想换一个实现类,怎么办呢? 那就得各种改代码了,还得更改上面的引用. 耦合度太高.
2.我们使用IOC/DI, 创建一个接口(UserService),然后将接口的实现类,都交给spring容器管理,在想更换实现类的时候,直接就将其注入给接口就可以了.
使用IOC/DI
@Autowired
UserService userService;
public void add(){
userService.executeAdd();
}
(左边一起来个伪代码,右边再画个图…)
这样.我们只要将对象交给spring容器(IOC), 再将实现类注入给接口(DI),就可以做到更改实现类的效果,实现类想怎么换就怎么换.
实现解耦.