IoC
首先要明确IoC能解决什么样的问题,它解决的是类之间的关联关系的问题。
IoC是整个Spring框架最底层最核心的部分,SpringBoot是最表面的部分
当对象之间有关联关系时,比如A对象的属性有B对象,那么正常的做法是创建者原则,即A对象去创建B对象,然后跟自己关联。
控制反转说的就是A不去控制B的创建和建立耦合的过程,把权限交给了别人。因此一定要提供一种方法来让外部完成这件事:
- 构造方法,比如A a = new A(B b),这样就建立了关联
- set方法,比如A.setB(b)
控制反转和依赖注入是一回事。
IoC的另一个好处是方便测试(切片测试)
Spring框架是如何实现控制反转和依赖注入的?
所有对象都是由容器来建的(和Servlet相似),我们写的业务代码类都叫业务对象,或者Spring的Bean对象,也有叫POJO对象的(Plain Ordinary Java Object)。
这些类都是解耦的,由外部通过构造方法或者set方法传参,那么具体传什么是写在配置数据里的。(注解)