什么是IOC:
IOC(Inverse of Control)控制反转,将对象的创建权利反转给Spring框架。
它是面向对象编程中的一种设计原则,可以用来降低计算机代码之间的耦合度。
IOC容器的底层原理:
IOC依赖于3门技术:1.dom4j解析xml文档。2.工厂模式 3.采用反射设计模式来创建对象
那什么是工厂模式:
假如说我们创建了3个类分别是A、B、C类,我们在B类中创建一个A类的对象,假如说A类出了问题,那么B类也肯定就出了问题,这就是耦合产生的不利结果,如果所有的类都这样写那耦合性就会很高。但是如果我们利用C类中的某个方法只有调用时来创建对象,我们在B类想使用A类对象时我们直接在C类中的方法进行获取,假如说A类发生错误,那也只有C类中的某个方法创建对象时会产生错误并且不会影响整个C类也不会影响其他类。我们把所有要的创建对象都放到C类响应的方法里,这就是工厂模式的一种。
在工厂类里,我们利用反射的方式创建对象,通过传入创建对象的全类名(反射通过全类名来创建对象)来创建对象,传入后才能创建对象,而这个参数就来自我们的配置文件中如下:
<bean id="demo" class="com.Demo" />
我们通过先创建工厂,工厂里传入xml配置文件,通过解析xml文件来加载配置文件,再通过获取bean对象里的id,创建出我们需要创建的对象,这样创建对象的方式就是我们所说的IOC容器完成的事情。上篇文章有一个例子可以作为参考。
IOC中的接口 :
1.IOC思想是基于IOC容器完成的 ,IOC的底层就是对象工厂。
2.Spring里提供了IOC容器实现的两种方式
1)BeanFactroy:IOC容器Spring内部使用的接口,这个接口只能使用不能对它进行更改
使用这种接口创建工厂对象如下:
BeanFactroy bf = new ClassPathXmlApplicationContext("xml文件名.xml");
* BeanFactroy:加载配置文件的时候不会去创建对象,在使用对象的时候才会去创建对象
2)ApplicationContext:BeanFactory接口的子接口,提供了更多更强大的功能,我们可以对它进行更改
使用这种接口创建工厂对象如下:
ApplicationContext = new ClassPathXmlApplicationContext("xml文件名.xml");
*加载配置文件的时候会把对象创建