二.IOC基本底层原理
2.1 工厂模式:
工厂模式是java常见的设计模式之一,提供了一种创建对象的模式,相对于最原始的创建对象的方法,降低了耦合度
通过工厂模式,将创建对象的权利移交工厂,我们不再通过new来创建我们所需的对象,而是通过工厂来获取我们需要的对象。
比如我们现在UserService类中想要调用UserDao类中的add()方法,如何用工厂模式来实现呢?
先创建UserDao类
public class UserDao {
public static void add(){
System.out.println("hello");
}
}
在创建工厂
public class UserFactory {
public static UserDao getUserDao(){
return new UserDao();
}
}
我们可以看到,在工厂中就创建了一个新建UserDao对象的方法
创建UserService类,调用工厂类中方法
public class UserService {
@Test
public void execute(){
UserDao dao = UserFactory.getUserDao();
dao.add();
}
}
2.2 IOC
IOC底层原理主要用到的有:xml解析,反射,工厂模式
具体过程如下:
首先先创建并配置xml文件
<bean id="dao" class="com.ccw.myExer.day01.factoryTest.UserDao"></bean>
创建工厂类
public class UserFactory {
public static UserDao getdao() throws Exception{
//1.xml解析
String classValue = "com.ccw.myExer.day01.factoryTest.UserDao";
//2.通过反射来创建对象
Class clazz = Class.forName(classValue);
return (UserDao) clazz.newInstance();
}
}
2.3 IOC接口
Spring提供IOC容器有两种实现方式(两个接口)
1.BeanFactory:IOC容器基本实现,是Spring内部的使用接口,一般不提供给开发人员使用
2.ApplicationContext:BeanFactory的子接口,提供更多更强大的功能,适用于开发人员
区别:BeanFactory在加载时不会创建对象,只有在使用(获取)对象是才进行加载
ApplicationContext在加载配置文件时就创建对象ApplicationContext优于BeanFactory:让服务器在启动时就创建好了对象
主要的两个实现类
区别:前者的路径需要写在盘符下的路径(绝对路径)
后者则只需要写src下的类路径