1、什么是IOC
(1)控制反转,把对象的创建和创建对象的过程交给Spring进行管理
(2)使用目的主要是为了降低代码耦合
2、 ICO的底层原理
1、工厂模式、XML、反射
//需要被使用的对象
class UserDao{
add(){
.....
}
}
//工厂类
class UserFactory{
public static UserDao getUserDao(){
return new UserDao();
}
}
//调用类
class UserService{
execute(){
//由工厂类获得所需对象,耦合度降低
UserDao dao = UserFactory().getUserDao();
dao.add();
}
}
2、IOC实现解耦的过程
//第一步 : xml配置文件中,配置创建对象
<bean id="对象id(唯一)" class="需要创建的对象的全路径">
//第二步:创建工厂类
class UserFactory{
public static UserDao getUserDao(){
//1、xml解析
String classValue = xml中bean的class属性值;
//2、通过反射来创建对象
Class clazz = Class.forName(classValue);
//3、创建对象 (使用配置文件以及反射实现进一步降低耦合)
return (UserDao)clazz.newInstance();
}
}
3、IOC(接口)
1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2、Spring提供了IOC容器实现的两种方式:(两个接口)
(1)BeanFactory:IOC容器的基本实现方式,是Spring内部使用的接口,一般不使用这个接口
特点: 在加载配置文件时不会创建对象,在使用(获取)对象的时候才会去创建对象
(2)ApplictionContext:是BeanFactory接口的子接口,提供更多更强大的功能。
特点: 在加载培训文件时,会把配置文件中所有的bean都会去创建对象
(3)ApplictionContext接口的实现类
- ClassPathXmlApplication Context:只需填写项目下配置文件的路径
ApplicationContext context =
new ClassPathXmlApplicationContext("配置文件名称");
对象 对象名 = context.getBean("bean的id",对象.class);
- FileSystemXmlApplicationContext:在使用时需要写上配置文件在电脑系统中的盘符全路径