Spring学习(一)-IOC
–2020年06月24日
一、IOC的概念
-
概念:
Inversion of Control ,控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理。
之前我们创建对象是使用User user = new User(); 这样的形式,是我们主动创建的,但是使用IOC之后,我们不再创建对象,而是由Spring来创建,我们直接使用User对象就可以了,如下示例:
//1、加载Spring配置文件 ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml"); //2、获取配置文件创建的对象 User user = context.getBean("user", User.class);
-
目的:
降低耦合度
二、IOC底层原理
利用XML解析、工厂模式、反射实现。
第一步:
xml配置文件,配置创建的对象。
<bean id="dao" class="com.ligangit.UserDao"></bean>
第二步:
在UserService类中调用UserDao类,创建工厂类。
class UserDaoFactory{
public static UserDao getDao(){
String classValue = "com.ligangit.UserDao"; //1、xml解析,得到class属性值
Class clazz = Class.forName(classValue); //2、通过反射创建对象
return (UserDao)clazz.newInstance();
}
}
在UserService中使用
UserDao dat = UserDaoFactory.getDao();
三、IOC容器实现方式:(两个接口)
- BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用,加载配置文件的时候不创建对象,在获取对象(使用)才去创建,比较费时,但是省内存
- ApplicatonContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用,加载配置文件的时候创建对象,可以在服务器启动的时候完成所有需要对象的创建,让耗时耗资源的操作,都交给服务器去做,所以这个接口比BeanFactory更好