IOC容器(底层原理解读)

IOC的概念和原理

目录

IOC的概念和原理

1.什么是IOC

(1)控制反转:

(2)使用IOC的目的:降低耦合度

(3)IOC解耦过程图解

2.IOC的底层原理

3.IOC接口

(1)IOC思想

(2)Spring提供IOC容器实现两种方式:(两个接口)

4.ApplicationContext 接口的实现类

两个实现类的区别



1.什么是IOC

(1)控制反转:

IOC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想

控制:IOC意味着将你设计好的对象交给IOC容器控制,而不是传统的在你的对象内部直接控制;

           IOC是有专门一个容器来创建这些对象,即由IOC容器来控制对象的创建;

           谁控制谁?当然是IOC容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

反转:传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;

           反转则是由IOC容器来帮忙创建及注入依赖对象;

           由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

IOC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。

传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;

有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

其实 IOC 对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在 IOC/DI 思想中,应用程序就变成被动的了,被动的等待 IOC 容器来创建并注入它所需要的资源了。

 

示例图:

                                                          

(2)使用IOC的目的:降低耦合度

用伪代码来比较:用工厂类来做例子(注意:工厂类不是IOC模式)

 

原始方式:一个类调用另外一个类的对象使用

 

升级后:工厂模式解耦,但是也不是完全解耦 

 

(3)IOC解耦过程图解

可能一时半会看不懂图,但是通过后面深入理解就会豁然开朗

IOC的思想就是我们仅仅通过修改XML配置文件的对象路径,就可以轻松把对象创建出来去被别的类进行调用

 

2.IOC的底层原理

(1)xml解析、工厂模式、反射

3.IOC接口

(1)IOC思想

         基于IOC容器完成,IOC容器底层就是对象工厂

(2)Spring提供IOC容器实现两种方式:(两个接口)

 

第一种: BeanFactory ,可以对IOC容器基本实现,是Spring 内部的使用接口,不提供开发人员进行使用

【加载配置文件的时候不会创建对象,在获取对象(也就是说在使用的时候)才会去创建对象】

 

第二种:ApplicationContext,是BeanFactory 接口的子接口,提供更多强大的功能,一般由开发人员使用

【加载配置文件的时候会把在配置文件中的对象进行创建】

*一般推荐使用第二种,因为Spring框架,要结合web项目进行操作,通俗点来说就是用tomcat服务器进行启动,因此把这些耗时耗内存的都在项目启动的时候进行处理更加合适

 

操作步骤:将ApplicationContext 改为 BeanFactory 【实验结果不变】

 

4.ApplicationContext 接口的实现类

查看的操作步骤如图:

打开实现类

两个实现类的区别

一个读取类路径下,绝对路径

一个读取文件路径,相对路径

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值