2.1、IOC概念
1.IOC
:控制反转,把创建对象和对象之间的调用过程,交给Spring
进行管理。
2.使用IOC
目的:为了降低耦合度
3.做入门案例就是IOC
实现
2.2、IOC底层原理
1.xml解析、工厂模式、反射
2.IOC
的引入过程
- 原始方式:
-
缺点:耦合度太高了
-
解决方案:引进了工厂模式
-
工厂模式:
- 缺点:耦合度未降到最低
-
目的:把耦合度降到最低限度
-
解决方案:引入
IOC
4.IOC
过程:进一步降低耦合度
第一步:xml
配置文件,配置创建的对象
<bean id="dao" class="com.spring5.UserDAO"></bean>
第二步:有service
类和DAO
类,创建工厂类
- 对
xml
进行解析 - 通过反射创建对象
class UserFactory {
public static UserDAO getDAO() {
//1.对xml进行解析
String classValue = class属性值;
//2.通过反射创建对象
Class clazz = Class.forName(classValue);
//3.创建对象
return (UserDAO)clazz.newInstance();
}
}
2.3、IOC接口(BeanFactory)
1.IOC
思想基于IOC
容器完成,IOC
容器底层就是对象工厂
2.Spring
提供IOC
容器实现两种方式:(两种接口)
-
BeanFactory
:IOC
容器基本实现,是Spring
内部的使用接口,不提供开发人员进行使用。- 特点:加载配置文件的时候不会创建对象,在获取对象(或者使用对象)才会去创建对象
-
ApplicationContext
:BeanFactory
接口的子接口,提供了更多更强大的功能,一般是由开发人员进行使用。- 特点:加载配置文件时,就会把在配置文件对象进行创建。
3.ApplicationContext
接口有实现类
FileSystemXmlApplicationContext
- 后面需要写上文件的绝对路径
ClassPathXmlApplicationContext
4.BeanFactory