Spring--依赖注入:setter注入和构造器注入

依赖注入:描述了在容器中建立Bean于Bean之间依赖关系的过程

setter注入

在本来已经在service里面引用了bean的相关方法的基础上,再引用之前已经写过的userDao的对象,即在service对象里面既引用到BeanDao,也引用到UserDao,如图所示:

然后需要在这里再定义上他们的setter方法:

再在service的save方法里面引用到引用对象的save方法:

(必须要定义到setter方法,且在save方法里面引用他们自身的save方法,否则无法在ApplicationContext.xml文件里面定义bean)

定义的话,就像这样:

运行结果如下图所示:

当然啦,还可以定义其他的数据类型:

然后,以上的数据类型是在BookDaoImpl里面定义的,所以想要在Spring里面引用它的话,就需要在ApplicationContext.xml文件定义的bookDao的bean标签里面进行嵌套,如图所示:

运行出来的话,value里面的值,就相当于付给某个对象的数据的具体值:

构造器注入

通过名称可以看出,这次的注入方式主要是依赖于构造方法,不再依赖于set方法。

通过学习可以发现,这两种注入方式基本上是一致的,就是使用的方法形式发生了改变,具体实现如下:


将之前的Property换成上图的形式,里面的属性都没有发生改变

这种方式会存在这样一个问题:该种方式耦合度过高,当我改变book里面某一个属性的名称时,意味着.xml文件里面的name属性也要进行变化,灵活性太低

可以更改成下面这种方式,将name属性改成type属性:

然后就会发现,如果有两个数据类型相同的对象,就又出现问题了,那我们又可以改成这种形式,这样的话,就会有顺序上面的要求,使用index位置属性代替type类型:

结尾的话,就是关于这两种注入方式的比较

如果是对于自己开发的模块的话,建议使用setter注入;

构造器注入与setter注入相比,不如setter注入灵活性强;

好啦!先再见啦!

posted @ 2022-11-14 21:51  yesyes1  阅读(387)  评论(1编辑  收藏  举报