一、什么是IOC
1、控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
2、使用IOC目的:为了耦合度降低
二、IOC底层原理
(主要是依靠xml解析、工厂模式还有反射
原始模式
这样可以实现,但是这种形式耦合度太高,不符合程序高内聚低耦合的宗旨
工厂模式
通过工厂类就降低了service 和 dao耦合度,虽然还有一定的耦合度,但是我们可以将耦合度降到最低,这时就用到了IOC
三、IOC解耦
这时耦合度又下降了一个等次,之前如果包路径变了代码就得重写,而现在只需要修改xml中的class路径即可,
IOC接口
1、IOC思想必须基于IOC容器产生,IOC容器底层本质就是对象工厂
2、Spring提供了IOC容器实现的两种方式(两个接口)
(1)Beanfactory:
是IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用
加载配置文件的时候,不会去创建对象,只有去获取的对象的时候才会创建对象,就是我们所说的懒汉式
特点:调用的时候会创建对象会比较浪费时间,但是会节省空间
(2)ApplicationContext:
BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员开发使用
加载配置文件的时候,就会创建对象,
特点:在服务器启动的时候完成创建,这样就保证了效率
ApplicationContext两个有实现类
其中
ClassPathXmlApplicationContext 读取类的路径,例如
FileSystemXmlApplicationContext 读取文件的路径 例如