IOC的底层原理
1. xml解析、工厂模式、反射
(1)原始的调用方法的方式:耦合度高,也就是说如果class UserDao有所改动,则service中的代码也要进行修改,会非常不方便。
(2)工厂模式是一个传统的降低耦合度的做法。新建一个工厂类,将两个类连接起来,变相的削弱了原本两个类之间的关系,这时若userdao有改动则直接去工厂类中改动即可。
- 工厂模式只是降低了耦合度但耦合度依然会有。
- 图中使用的static静态方法,在启动时即存在,后面不用去new,可以直接使用类名
xml解析: 对于xml文件中的内容获取值或者操作值
反射 通过得到类的字节码文件,操作类中的所有内容
2.IOC的过程
-
xml配置文件,配置创建的对象
-
创建工厂类
-
总结一下,IOC是xml解析、工厂模式、反射的结合,目的是做到让耦合度尽可能降到最低的作用。
3.IOC(接口)
1.IOC的本质上就是工厂模式
2.Spring提供给IOC容器的两种实现方式(两个接口):
(1)BeanFactory:IOC容器的基本实现,是spring的内部接口,一般开发人员不使用。
- 加载配置文件时不去创建对象,使用时才创建。
(2)ApplicationContext:BeanFactory的子接口,有更多的功能,开发人爱用。
-
加载配置文件时就会创建对象。
-
因为web项目启动时要启动tomcat,所以在项目启动时把耗时耗资源的操作在项目启动的时候进行处理是更加合理的,因此ApplicationContext的好处会更多一些。
3.ApplicatonContext中主要的实现类
1.FileSystemXmlApplicationContext: 需要写带盘符的路径。
ClassPathXmlApplocationContext: 需要些src下的路径
2.前面的图标绿色的代表接口,蓝色的代表实现类