一、IOC底层实现原理
框架 = 解析 + 反射 + 工厂
XML解析
XML配置文件,配置创建的对象
工厂模式
原始的方式是在
UserService
中
new
一个
UserDAO
的对象,然后调用对象中的方法,这样使得两个类的耦合度很高。

而工厂模式将
new
一个
UserDao
通过
UserFactory
工厂类来实现,降低了
UserService
和
UserDao
之间的耦合度,但还是存在耦合的问题,所以需要进一步降低耦合度。
反射
通过XML解析,然后利用反射创建文件
IOC整个过程
第一步:xml配置文件,配置创建的对象
<!--配置User对象创建-->
<bean id="Dao" class="spring5.UserDao"></bean>
第二步:创建工厂类,通过解析xml配置文件和反射实现。
Service
类通过工厂类调用
Dao
类
public class UserFactory {
public static UserDao getDao(){
String classValue = class属性值; //xml解析
Class clazz = Class.forName(classValue);//通过反射创建对象
return (UserDao) clazz.newInstance();
}
}
二、IOC( BeanFactory
接口)
BeanFactory
IOC思想基于IOC容器完成,IOC容器底层就是对象工厂。
Spring提供IOC容器实现两种方式:
-
接口:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用。加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象。BeanFactory
-
接口:是ApplicationContext
接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。加载配置文件时候就会把在配置文件对象进行创建。BeanFactory
ApplicationContext
接口有两个实现类
ApplicationContext context = new ClassPathXmlApplicationContext("userBean.xml");
ApplicationContext context1 = new FileSystemXmlApplicationContext("D:\\Java\\workspace_idea\\Spring5_demo1\\src\\userBean.xml");