Spring_IOC容器
一、底层原理——目的:降低耦合度
IOC容器本质上就是对象工厂,先读取配置文件,再通过反射创建对象
1、XMl解析
2、工厂模式
3、Java反射
4、代码示例:
代码如下(示例):
class UserFactory{
public static UserDao getDao(){
String classValue=class属性中的值; //xml解析
Class clazz=Class.forName(classValue); //通过反射创建对象
return (UserDao)clazz.newInstance();
}
}
二、 接口——两种IOC容器实现方式
1、BeanFactory
(1)IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用
(2)加载配置文件时,不会立即创建bean对象,只有在获取对象或使用对象的时候才会去创建对象。
2、ApplicationContext
(1)BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。(应该类似于懒加载)
(2)加载配置文件时,会立即创建配置文件里的bean对象,无论使用与否
ApplicationContext接口的实现类
使用FileSystemXmlApplicationContext时需要给配置文件在系统中的绝对路径
使用ClassPathXmlApplicationContext时只需要给在项目中src下的配置文件的路径即可
3、总结:
两者都可以加载Spring配置文件
以下两种使用方法产生的结果类似
使用ApplicationContext:
ApplicationContext context= new ClassPathXmlApplicationContext("bean1.xml");
使用BeanFactory:
BeanFactory context= new ClassPathXmlApplicationContext("bean1.xml");
但是ApplicationContext可以让所有该加载的对象在服务器启动时就加载完成。(慢可以,慢对地方就行)以此可以避免服务器的使用过程中卡顿,提高用户的使用体验。