spring框架
当初在学校的时候听到ssh框架觉得高大上,什么依赖注入,控制反转啥的听得人一愣一愣的。那什么是控制反转和依赖注入呢?
依赖注入(DI)
所谓的依赖注入,则是通过springmvc来管理外部对象的资源。这里把角色分为对象、对象需要的外部资源、DI容器。
依赖注入,则是指对象依赖DI容器向其注入对象所需的外部资源。
控制反转(IOC)
在反转这个概念前,需要知道什么值正转。一般情况,当我们需要在A对象中使用C对象的方法时,一般是主动实例化C的对象;而控制反转则是A中不主动去创建C的实例,而是被动等待着IOC容器获取一个C的实例,并且向A中注入。
public class A{
B b = null;
public void setB(B b){
this.b = b;
}
public void test(){
b.useBmethod(){};
}
}
这就是依赖注入和控制反转。
小结
依赖注入和控制反转是从不同的角度来描述了程序的方面。
依赖注入是从应用程序的角度在描述,程序依赖DI容器创建并向程序中添加外部资源,而控制反转则是从容器的角度来解释,IOC容器控制程序,由IOC容器反向的向应用程序注入外部资源,而不是程序主动去请求资源。
这个思想实际上并未影响程序代码,而是将设计上颠倒了主仆。一般的程序都是程序主动创建对象请求资源,但是从IOC/DI中,程序则是变成了被动接受资源的过程。
但是这个有什么用呢?控制反转和依赖注入,我认为其实是简化了程序的耦合度,将资源的请求交给容器来处理,是整个程序的结构变得比之前灵活松散。