-
什么是IOC
( 1 ) (1) (1) 控制反转,将对象创建和对象之间的调用过程交给Spring进行管理
( 2 ) (2) (2) 使用IOC的目的:降低耦合度
( 3 ) (3) (3) 做入门案例就是IOC实现 -
IOC的底层实现
( 1 ) (1) (1)xml解析、工厂模式、反射、 -
图解IOC的实现过程
( 1 ) (1) (1)我们平时是这样子写的
class UserService{
excute(){
UserDao dao = new UserDao();
dao.add();
}
}
class UserDao{
public add() {
}
}
( 2 ) (2) (2) 工厂模式降低代码耦合度
//降低耦合度
class UserService{
excute(){
UserDao dao = UserFactory.getDao();
dao.add();
}
}
class UserDao{
add(){
}
}
//这是工厂类
class UserFactory{
public static UserDao getDao(){
return new UserDao();
}
}
( 3 ) (3) (3)将耦合度降低到最低
- xml文件解析
- 反射:得到字节码文件
a: 第一步xml配置文件,配置创建的对象
b: 第二步有service类和dao类,创建工厂类
//进一步降低耦合度
class UserFactor{
public static UserDao getDao(){
String classValue = classs属性值;//1.xml解析
//通过反射创建对象
Class clazz = Class.forName(classValue);
return (UserDao)clazz.newInstance();
}
}
IOC(接口)
- IOC思想基于IOC容器创建完成,IOC容器底层就是对象工厂
- Spring提供IOC容器实现的两种方式
( 1 ) (1) (1)BeanFactory: IOC容器基本使用,是Spring内部的使用接口,不提供开发人员进行使用,加载配置文件时候不会创建对象,在获取对象的时候才去创建对象
( 2 ) (2) (2)ApplicationContext:ApplicationContext是BeanFactory的子接口,面向开发人员进行使用
在加载配置文件时候就完成创建对象(推荐使用)
public class TestSpring{
public void testAdd(){
//1.加载spring配置文件
//2. 获取配置创建的对象
ApplicationContext context = new classPathXmlApplicationContext(configLocation:"beanl.xml");
User user = context.getBean(s:"user", User.class);
System.out.print(user);
user.add();
}
}
- ApplicationContext接口的实现类
ClassPathXml:表示在src内部文件
FileSystemXml:表示外部的文件



