IoC(控制反转)和DI(依赖注入)的理解

IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等。
先从我们自己设计这样一个视角来考虑:
所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件

其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。

Ioc使用,主要是用来创建类的对象
DI是依赖注入,一个对象依赖于另一个对象,代码中体现为一个对象定义为另一个类的属性

Ioc的使用

创建service层
Service接口+Service实现类

例如创建UserService接口

创建Service实现类
可以使用快捷方式创建实现类

创建测试类

一、使用new对象访问Service层

二、使用spring 获取bean对象访问Service层

1、配置spring配置文件
2、加载spring配置文件
3、获得Service实现类对象

Xml配置文件解释
整个配置文件根标签为beans,里面可以创建多个bean标签

下面xml中是完整的spring约束

在这里插入图片描述
xmlns:是XML NameSpace的缩写,因为XML文件的标签名称都是自定义的,自己写的和其他人定义的标签很有可能会重复命名,而功能却不一样,所以需要加上一个namespace来区分这个xml文件和其他的xml文件,类似于java中的package,相当于引用

xmlns:xsi表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。

schemaLocation就是 xsi 命名空间的一个属性,如果我们把
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” 的别名改成
xmlns:sb=“http://www.w3.org/2001/XMLSchema-instance
这里其实就变成 sb:schemaLocation,这个属性的值由一个或多个URI引用对组成,两个URI之间以空白符分隔(空格和换行均可)
它定义了XML Namespace和对应的 XSD(Xml Schema Definition)文档的位置的关系,意思就是 这个命名空间对应的具体模板是哪个

DI依赖注入
将一个类作为属性注入到另一个类的对象中

1、创建Dao层接口
2、创建Dao实现类
3、创建Service层接口
4、创建Service层实现类
5、实现不使用依赖注入在Service层创建dao层对象
6、使用依赖注入实现在Service层使用dao层对象 (接口+setter方式)
private BookDao bookDao;
7、配置spring实现属性依赖注入
在这里插入图片描述
8、创建测试类

猜你喜欢

转载自blog.csdn.net/weixin_43651077/article/details/84144538