一文带你熟悉SpringIOC
阿狸主题曲 人气:0
Spring的IOC:
>**IOC是Spring的一个核心组件**,理解IOC是迈向Spring大门的重要一步
![Spring框架](https://gitee.com/alztq/learn_images/raw/master/https://gitee.com/alztq/learn_images/Spring1.jpg)
>现实生活中,我们写字用的笔会有多种颜色,为了做不同的标记,需要用不同颜色的笔。如果只是使用一两种的话那还好说,但如果是要同时用到五六种颜色的笔,会很麻烦。
- 承接上面问题,既然同时带那么多只笔很麻烦,那么我们可以考虑带多只笔芯、一只笔壳:然后需要哪种就套上哪种,方便携带。
![](https://gitee.com/alztq/learn_images/raw/master/https://gitee.com/alztq/learn_images/电脑图片2.png)
- 这就类似于Spring的IOC,IOC翻译过来就是**“控制反转”:我们需要搞清楚两个点(控制什么?谁来控制)***
1. 控制什么?就跟我们控制笔芯颜色一样,SpringIOC控制的是对象之间的依赖关系。
2. 谁来控制?在没有使用一壳多笔芯之前,我们使用哪一种笔都是制造商来提供的;而在使用了之后,就反转成了由我们使用者自己来控制了。
![](https://gitee.com/alztq/learn_images/raw/master/https://gitee.com/alztq/learn_images/电脑图片2.png)
- 我们在开发中,创建的类之间耦合度极高,如下:创建一个笔类,如果要使用红色笔芯就要单独去创建红色笔芯的类,然后再去调用。
```java
public class pen {
private Refill refill = new RedRefill();
public void use(){
System.out.println("使用红色笔芯的笔");
}
}
上面是创建红色笔芯的类,但如果要创建蓝色笔芯、黑色笔芯则要额外去进行编写:
public class pen {
private Refill refill = new BlueRefill();
public void use(){
System.out.println("使用蓝色笔芯的笔");
}
}
public class pen {
private Refill refill = new BlackRefill();
public void use(){
System.out.println("使用黑色笔芯的笔");
}
}
缺点:耦合度太高,重复代码量多,用得不爽。
```
- 那么,IOC控制的是:在创建笔对象时把红色笔芯的对象注入进去笔壳对象,这就是控制对象之间的依赖关系,而这个过程不用我们自己做,SpringIOC自动帮我们做好:
![注入关系图](https://gitee.com/alztq/learn_images/raw/master/https://gitee.com/alztq/learn_images/注入.PNG)
因为是一个对象注入另一个对象,所以我们也把这种现象称为**依赖注入,即DI()Dependency Injection)**。
- 控制的对象也发生了变化,对象的控制权交由了IOC容器,我们需要做的:是去编写一些IOC的配置文件,然后负责使用IOC创建这个对象就好了。
![](https://gitee.com/alztq/learn_images/raw/master/https://gitee.com/alztq/learn_images/IOC概念.PNG)
>最后我们来总结以下:**IOC是Spring的一个核心组件**,理解IOC是迈向Spring大门的重要一步。**IOC即控制反转,我们平时创建对象的脏活以后都由IOC来完成**,因此代码之间的耦合度将显著降低。随心所欲的创建,随心所欲的玩起Spring吧。
加载全部内容