Spring的 ioc 和 di的简介

1、反转控制IOC (Inversion Of Control)的缩写,即创建对象的反转控制。:把对象的创建权限交给Spring容器,让spring帮我们实例化对象,我们只是从spring容器中取得实例

1.1 例:

以前我们要自己new对象,现在spring帮我们new对象,以后我们需要对象,就找spring要)

以前:做鞋子–手工作坊 (自己new对象)

        1、效率低
        2 、每个细节都要关注
        3、成本高----人力 ,时间

现代:工厂 (spring bean工厂—new对象)

		1、效率高  
		2、不需要关注每个细节,机器 
		3、成本低 

2、依赖注入DI(Dependency Injection )的缩写:依赖了spring容器注入的那个对象(在spring配置文件中,将其中一个bean依赖注入到另一个bean中)。

2.1 首先,DI的方式一般有三种:

2.1.1构造器依赖注入:

构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。【在构造方法的入参中设置需要注入的对象】

2.1.1.1构造器注入

使用方式: 在构造方法中声明需要注入的对象,构造方法的参数列表就是需要注入的对象列表。

优点: 对象在构造完成即进入就绪状态。

缺点: 当依赖对象比较多时,构造方法的参数列表会比较长,不好维护。

2.1.1.2例子:

1)根据参数名进行注入
在这里插入图片描述
2)根据参数下标进行注入
在这里插入图片描述

2.1.2Setter方法注入:

Setter方法注入是容器通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
使用方式: 在类中增加需要被注入对象的getter/setter方法。

扫描二维码关注公众号,回复: 12138225 查看本文章

优点: 使用起来更宽松,需要什么对象就调用其对应的setter方法。

缺点: 构造完成后不能立即使用,需要先调用依赖对象的setter方法进行依赖注入。

2.1.2.1例子:

1)当参数为普通类型时直接可以引用:在这里插入图片描述
2)当参数为引用类型时:
在这里插入图片描述

3)当参数为数组时:
在这里插入图片描述

4)当参数为集合时:
在这里插入图片描述

5)当参数为map时:
在这里插入图片描述

2.1.3接口注入:

需要实现某一个用于注入对象的接口,该接口定义有注入对象的方法,方法参数就是需要被注入的对象。

PS:接口注入的方式比较繁琐且侵入性强【需要实现一些不必要的接口】,用得很少,了解就好。

猜你喜欢

转载自blog.csdn.net/m0_50217781/article/details/111183188