一、什么是IOC(Inversion of Control)控制反转
IOC是一种设计思想,是为了降低代码耦合出现,为了方便理解也可以用“依赖注入”来解释。
IOC思想解决的场景是:
存在两个类,class A 和 class B ,若想要在A中使用B的属性和方法,那么常规的解决方法是在A中创建一个B类的对象b,通过对象b来调用属性或方法。这可以说是类A依赖于类B,A的对象a依赖于B的对象b。而IOC思想反转了这种依赖关系。
IOC的底层实现涉及到了三个部分:xml解析,对象工厂和属性注入。
那么首先我们需要解决三个问题:
一、IOC容器创建的是什么对象
二、IOC容器如何管理对象
三、IOC容器如何实现依赖关系
第一个问题——SpringBean
IOC容器中的对象为bean对象。spring启动时,bean对象就会被IOC容器创建并调用。
对于创建springbean对象,IOC容器提供了两种实现方式,BeanFactory & ApplicationFactory
BeanFactory在加载配置文件时并不创建对象,程序使用这个对象时才创建它ApplicationFactory在加载配置文件时创建对象。相当于在准备阶段就由服务器完成对象创建工作,在程序运行过程中不需要再分配资源,以提高效率。因此多使用ApplicationFactory实现方法。
第二个问题——管理对象包含了两种含义:创建对象和属性注入
class A(){private int age;}class B(){A a = new A();//创建对象a = A(18);//属性注入}
以一种简单的方式来理解属性注入,其实就是给属性赋值。Spring提供了两种管理对象的方式,一种是通过xml配置文件,一种是通过注解。
(一)通过配置文件xml来创建和管理bean对象
1.1创建对象//有类User<beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"><!--配置User对象创建--><bean id = "user"> <!--id为bean对象在IOC容器中的唯一标识,class为类路径--></bean></beans>
1.2注入属性(为创建的bean对象的属性赋值) 常规的注入属性的方式有两种,一种是通过set方法给对应的属性赋值;另一种是通过有参构造函数,在创建对象的同时进行赋值。对应这两种方式,配置文件分别提供了一种标签来完成属性注入。
1.2.
如果觉得《Spring框架——IOC》对你有帮助,请点赞、收藏,并留下你的观点哦!