IOC概念和原理
控制反转:把对象创建和对象之间的调用过程交给Spring管理
目的:降低耦合度
底层原理
- xml解析
- 工厂模式
- 反射
原理图解
- 原始方式:耦合度过高。
-
使用工厂模式:一种解决方案,降低一定的耦合度,但依然存在。
(static可以直接用类调用方法,不需要new UserFactory。比如在现实中不可能每次生产一样东西就造一个工厂。)
- IOC模式
第一步: xml配置文件,配置创建的对象
<bean id="user" class="com.User"></bean>
第二步:有service类和user类,创建工厂类
class UserFactory{
public static User getUser(){
String classValue = class属性值; //xml解析
Class clazz = Class.forName(classValue); //通过反射创建对象
return (User)clazz.newInstance();
}
}
第三步:像上述工厂模式关系一样调用。
IOC接口
IOC思想基于IOC容器完成,IOC容器底层就是对象工厂。
Spring提供IOC容器实现两种方式(两个接口)
-
BeanFactory
加载配置文件的时候不会创建对象,在获取对象或使用时才会创建对象。
-
ApplicationContext(常用)
加载配置文件时就会把在配置文件中的对象进行创建(饿汉式)。用内存换取时间,将这些耗时的项目在服务器启动时便进行处理在Web项目时更合适。
ApplicationContext实现类
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
ApplicationContext context =
new FileSystemXmlApplicationContext("D:\Java\bean.xml");