作者:Leleste_530 | 来源:互联网 | 2023-09-25 07:53
1:Spring资源目录(resource)的XML文件头:
2:控制反转IoC(Inversion of Control)
2.1:什么是控制反转?
控制反转就是将程序控制权由对象交给了交给容器,控制反转也是一个解耦合的过程(笔者通过一个在网上看到例子来说明)
解耦合:
传统的程序就像第一幅图一样,齿轮是彼此依赖的,如果一个齿轮出故障不转动了,整个程序就崩溃了,这就代表这耦合度过高;
控制反转就相当于第二幅图的第三方齿轮,其中一个齿轮就算出故障了,整个程序也不会崩溃,这就是所谓的解耦合;
控制反转的由来?
第二幅图就中的第三方就是IOC容器,控制权就在它手里,如果A对象需要一个D对象,但是因为第三方IOC容器的介入失去了与D对象的联系,那么A对象就会告诉IOC容器(第三方)我需要一个D对象,那么IOC容器就会将D对象创建并注入到A对象需要的地方,这时候就体现出了控制权在IOC手中。而第一幅图中,A对象需要一个D对象,他就会自己创建并添加 到自己需要的地方,控制权在自己手上。
综上所述:控制权由对象自己手上交给IOC容器来获得控制权,这就叫控制反转
2.2什么是依赖注入?
在博主看来依赖注入:就是给IOC容器创建的类赋予(注入)属性,接下来博主会给大家看一段代码来加深大家的理解
创建一个Person类
package com.kaifamiao.ioc.what;import java.util.Calendar;
import java.util.Date;/*** @author 后来的老李* @version 1.0*/
public class Person {//Person类的属性//get和set//无参构造和有参构造//toString
}
添加resouce资源目录下的XML文件
在XML文件中bean就是一个对象,这就是控制反转,开始第一段代码的Person是个类,现在IOC容器将会给我们创建对象(李唐天子李星云),而传统的我们要通过类去创建一个对象就需要去new一个对象(Person p=new Person()),然后再设置对象的属性,而依赖注入就是,也就相当于p.setName(李唐天子李星云),一个意思,但是两者的不同在于,传统的是对象自己去赋值,而依赖注入是IOC容器创建好了对象,在给对象的属性注入值,所谓依赖就是对象所需要的值是通过依赖IOC容器注入的。
注意:控制反转是一种思想,依赖注入是一种模式,两者不能混为一谈。
以上是笔者自己的见解,有问题希望大家留言纠正;
星光灿烂,愿我们一同前行!