一、IOC概述
控制反转(IOC)是面向对象编程中的一种设计原则,可以用来减少计算机代码之间的耦合度。本质上是把对象创建和对象之间的调用关系交给Spring来进行管理。
二、IOC底层原理
xml解析、工厂模式、反射
1.原始方式(这种方式耦合度太高了~)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZwQGMzUzM0kTN3ImNxcDNhhzN5ImMmBDM4czYihDNy8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.工厂模式(将对象的创建权利移交给统一的工厂类处理)
3.反射
总结:IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
三.Spring中IOC的实现
-
- Spring中IOC容器实现的两种方式
(1)BeanFactory:IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员进行使用
*它在加载配置文件时不会创建对象,在使用时才会去创建对象
(2)ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用
*加载配置文件时候就会把配置文件对象进行创建
-
- IOC中的Bean管理
Spring中Bean主要分为两类:
(1)普通Bean:在配置文件中定义bean类型就是返回类型
(2)工厂Bean:在配置文件中定义bean类型可以和返回类型不一样(实现接口FactoryBean,实现方法定义返回的Bean类型)
这些Bean的作用域分为四种:单实例(singleton)、多实例(prototype)、request(请求)、session(会话)
Bean的生命周期:
(1)通过构造器创建Bean实例(无参数构造)
(2)为Bean的属性设置值和对其他Bean引用(调用Set方法)
(3)调用Bean的初始化方法
(4)bean可以使用了
(5)容器关闭时,调用bean的销毁方法
Spring中注解方式注入:
(1)@Autowired:根据属性类型进行自动装配
(2)@Qualifier:根据属性名称进行自动装配
(3)@Resource:可以根据类型,可以根据名称注入
(4)@Value:注入普通属性