1、什么是 IOC
(1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理。
(2)使用 IOC 目的:为了耦合度降低
(3)做入门案例就是 IOC 实现
2、IOC 底层原理
(1)xml 解析、工厂模式、反射
(2)原始方式创建对象和对象调用的过程。例如:Service调用Dao层。具有高耦合性。
class UserSevice{
public void execute(){
UserDao userdao = new UserDao();
userdao.add();
}
}
class UserDao{
public void add(){
...
}
}
(3)工厂模式创建对象和对象调用的过程,在原始模式上进行进一步解耦。
class UserSevice{
public void execute(){
UserDao userdao = UserFactory.getDao();
userdao.add();
}
}
class UserFactory{
public static UserDao getDao(){
return new UserDao();
}
}
class UserDao{
public void add(){
...
}
}
(4)IOC过程,进一步解耦。
1xml配置文件,配置创建的对象
<bean id="dao",class="com.at.UserDao"></bean>
2存在service和dao类,创建工厂类
class UserFactory{
public static UserDao getDao(){
//2.1xml解析
String classValue = class属性值;
//2.2通过反射创建对象
Class clazz = Class.forName(ClassValue);
return (UserDao)clazz.newInstance();
}
}
3、IOC 底层原理
1、IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂
2、Spring 提供 IOC 容器实现两种方式:(两个接口)
(1)BeanFactory:IOC 容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用,加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用,加载配置文件时候就会把在配置文件对象进行创建。
ApplicationContext的2个主要的实现类为
ClassPathXmlApplicationContext: 读取类路径下的配置文件
FileSystemXmlApplicationContext: 用于和读取系统文件目录中的配置文件
4、IOC 操作 Bean 管理(综述)
1、什么是 Bean 管理
(0)Bean 管理指的是两个操作
(1)Spring 创建对象
(2)Spirng 注入属性
2、Bean 管理操作有两种方式
(1)基于 xml 配置文件方式实现
(2)基于注解方式实现