目录
一、依赖注入方式
依赖注入方式:
①:setter注入
*简单类型
*引用类型
②:构造器注入
*简单类型
*引用类型
这里我们先了解一下IoC容器、bean、DI之间的关系
1.1Setter注入
setter注入--引用类型
我们之前的讲解案例都是引用类型,下面我们简单在回顾一下,然后进行简单类型的讲解;
我们之前都是注入一个引用类型,那我们注入多个类型也是可以的
我们只需要再定义引用类型属性并提供可访问的set方法
然后在配置文件中创建需要引用的bean,再将bean注入到需要引用的bean里;
setter注入--简单类型
然后就可以在配置文件中配置它的属性值了,这里需要注意,我们往哪个bean中注入,就往那个bean里面配置
<bean></bean>
<property >
name:名称(这里强调这是形参的名称);ref:引用bean;value:属性值;
运行,查看下结果
1.2构造器注入
构造器注入--引用类型
Setter注入使用的是set方法,而构造器注入使用的是构造方法
配置中也不使用property,使用constructor-arg
构造器注入--简单类型
解决形参名称的问题,与形参名不耦合
这里他<constructor-arg name="databaseName" value="mysql">
这里我们的name是形参,如果我们的形参名发生改变,则我们bean中的配置也需要发生改变,这样耦合度比较高,不符合我们Spring的初衷
Spring的初衷解耦
我们上边都是使用标准的形式进行书写
下边是一些特殊的解决方式,我们最终也是怕构造方法的形参名称发生改变,那我们直接在bean配置中不写name,而通过属性的类型来判断,但是此种方式也有弊端,就是当存在两种类型相同的属性时,就很难分别
下边我们又通过另一种方式来进行,通过位置,来判断,index(),使用位置解决参数匹配;
将第几个参数分配给第几个属性;
总结:
二、依赖注入方式选择
三、依赖自动装配
配置文件中,就不在需要写配置信息,只需要在后边加一个autowire属性,就可以,他有一下集中类型可以选择;
不再使用<bean></bean>
3.1按类型注入
没有装配对象了会报错,因为我们需要将BookDao-bean注入,如果没有则会报错
按类型注入,如果两个同类型,不同名称的装配对象,则也会报错
3.2按名称注入
按名称注入:他会在IoC容器中找与之名称相匹配的bean,如若没有也会报错
推荐使用按类型;
按类型名字也可以不写,但是不推荐,只是做说明,往后还是按标准书写;
3.3依赖自动装配特征
四、集合注入
我们主要了解下书写格式
定义集合类型变量
相对应的set方法
save()方法中打印相对应的集合