细化:
- 什么是控制?控制了什么?
- 什么是反转?反转之前是谁控制的?反转之后谁控制的?如何控制?
- 为什么要反转?反转之前有何问题?反转之后有何好处?
解答:
- 什么是控制?控制了什么?
在使用spring的时候,我们通常会简历一些类,例如DeptService、StaffService,然后用一些注解例如:@Autowired等注解。
在程序运行时,用的具体的DeptService对象、StaffService对象,这些对象是什么时候创建的?谁创建的,包含对象中的属性是什么时候赋值?谁赋的值?这些都是spring帮我们处理的。
这就是控制。spring控制对象的创建、控制对象内属性的赋值。
- 什么是反转?反转之前是谁控制的?反转之后谁控制的?如何控制?
如果我们不用spring,则我们需要去创建对象及对对象进行赋值,这就是反转,表示一种对象控制权的反转。
- 为什么要反转?反转之前有何问题?反转之后有何好处?
假设有三个类:A、B、C,其中A、B中包含了C属性。如果不用spring 需要进行创建赋值需要以下五行代码,若有更多的类及更多属性,则需要写更多的创建及赋值逻辑,这样加重了程序员的负担,交于spring后程序员则可以值倾向于处理业务逻辑。
A a = new A();
B b = new B();
C c = new C();
a.c = c;
b.c = c;
总结:
Ioc表示控制反转,若使用spring,则会通过spring来负责对象的创建及属性的赋值,那么对象的控制权则交于spring。