前言
本章节主要大致跟大家聊聊Spring框架中的控制反转和依赖注入
1. 控制反转和依赖注入
1.1 控制反转(IOC)
1. 反转控制-"一般面试较常问,它是一个概念性的内容"
⑴ 反转也称"转移"。
⑵ 控制:对于'成员变量'赋值的控制权。
2. 对比有Spring框架之前的赋值和没有Spring框架之前的赋值:
⑴ 没有Spring框架之前,我们对"对象的成员变量"的赋值是:
User u = new User()
u.setName("aaa");
---->直接在代码中去做实现。
⑵ 有Spring框架之后,我们对"对象成员变量"的赋值是:
定义对象:private User u;
创建对象的SetUser() + GetUser() 方法
在Spring的配置文件中给对象的每一个成员变量赋值。
⑶ 以上可以看出对于对于'成员变量'的赋值的'控制权'发生了
转移。把对于"成员变量赋值的控制权" = '代码'转移到了
'Spring配置文件+Spring工厂'。---->因此这就称为"反转控制"。
------------------------------------------
3. 反转控制的详解:
⑴ 反转控制:把对于成员变量赋值的控制权,从代码中反转(转移)到
Spring工厂和配置文件中完成。
⑵ 好处:解耦合
⑶ 底层实现原理:工厂设计模式(Spring工厂帮我们生产了对象)
1.2 依赖注入(DI)
1. 依赖注入(依赖注入往往面试时一般较少会问,它是一种Spring的
编程方式,这种编程方式需要慢慢体会,并融入到开发过程中)。
⑴ 依赖注入是编程的一种理念,一种想法。
------------------------------------------------------
2. 依赖注入简称:DI
3. 依赖注入详解
⑴ 注入:通过Spring的工厂及配置文件,为对象(bean, 组件)的成员变量赋值。
⑵ 依赖:简单来说就是我们平时在开发有两个类:一个UserService专
门处理业务+一个UserDAO专门处理数据库。那么此时UserService类在操
作业务的时候必须去执行数据库的CRUD操作,执行数据库CRUD操作就必须
用到UserDAO,那么此时就可以说UserService依赖UserDAO类。---->
即:UserService需要UserDAO的时候,就等于UserService依赖了
UserDAO。(我需要你的时候,就等于我依赖了你).
★ ⑶ 依赖注入思想:如果我真依赖了你,我就可以将你注入进来,就是
将你作为我的成员变量-->通过Spring的配置文件来进行赋值。
--->简单来说就是:UserService依赖了UserDAO就可以将UserDAO定义
为UserService类里面的成员变量并提供UserDAO的Get/Set方法-->最终
就可以通过Spring的配置文件'applictaionConetxt.xml'来对UserDAO
赋值(注入)。
1.2.1 依赖注入理解加深
1. 依赖注入思想:当一个类需要另一个类时, 就意味着依赖,
一旦出现依赖,就可以把另一个类作为本类的成员变量, 最终
通过Spring配置文件进行注入(赋值)。
2. 依赖注入的好处:解耦合。
2. 总结
控制反转就是将:原本对于对象的创建和对象中属性的赋值全部
在代码中实现,控制权在代码的内部类中实现。而现在通过Spring
框架实现对象的创建直接定义要创建的的类,然后提供Get/Set方
法,赋值操作在Spring配置文件(applicationConext.xml)中利
用’标签’实现赋值的操作。依赖注入:他是一种Spring的编程思想。当A类需要B类中的方法,就说明A类依赖B类,此时在A类中定义一个B类的类型的变量"private B b;" + Get/Set方法 + Spring配置文件中对创建B类并做赋值操作。
以上"控制反转"和"依赖注入"实际的代码操作都是类似的。
主要是应用到了Spirng的配置文件的配置。大大达到了解耦合的作用。