spring 的IOC (inversion of control):控制反转,对于这句话的理解,相信很多即使是用spring 1到2年的开发人员,都不一定能够说得很明白,今天,我想救我的理解,说明下,IOC具体指的是什么,IOC能干什么。
IOC : 是一种责任反转的设计思路。
public class Work{
private Tool tool;
private List<Work> works;
...
}
工作类中,有两个属性 一个是工具,一个是工人列表。 正常情况下,我们在使用这个类的时候,是需要自己去组装tool对象以及works列表的,这种编写代码的方式大致如下。
@Test
public void test(){
Work w = new Work();
Tool t = fetchTool...;
w.setTool(t);
List<work> works = ..
w.setWorks(works);
// now we can use our work object . w
}
上面的编写方式会导致我们写的代码出现即为浓厚的耦合度。并且并不十分整洁和利于阅读。
那么现在使用spring IOC容器,来帮助我们实现对Work对象的使用。
@Repository
public class Work{
@autowired
private Tool tool;
@autowired
private List<Work> works;
...
}
----------
@autowired
private Work w;
@Test
public void test(){
// now we can use work right now.
}
通过这两种创建work对象的对比我们可以很清晰的看到,对象的创建从我们主动去完成,变成了几本不用我们去完成。将创建对象的责任交给了IOC容器帮助我们完成。 控制反转,反转的是责任,责任从我们自己的手上转移到了IOC容器中跟,
从而完成了编码的解藕。