文章目录
- 前言
- DI入门案例
- 总结
前言
前面我们已经演示了
IOC
入门案例的介绍,里边还有一些东西是耦合
的,接下来我们就来学习DI
的入门案例来解决这个问题💪💪。
DI入门案例
我们先来想一下,你做
DI
这个首先得先让IOC容器管着bean
,所以我们现在做的是基于上一个案例
的基础上实现的,这是第一点,我们现在的Service中是使用new
的形式创建的Dao
对象,这句话还留吗❓是不是不能留了,你只要写上实现类,耦合度必然高
,那我们还做什么DI呀🤣🤣,如果不能留的话,这个对象如何进去呢❓,也就是Service中需要的Dao对象如何进入到Service中❓,在这里边我们是提供一个方法
来传对象,接下来又出现问题了,Service与Dao间的关系如何来描述, 也就是 Spring容器如何知道Service与Dao的关系呢,我想有些朋友就想到了,用配置
的方法来将两者之间的关系告诉Spring容器。以上是我们还没有开始做之前的一些分析,能够帮助我们快速整理思路🎉🎉~~
首先
删除
业务层使用new
的方式创建的dao对象👇👇
接下来给它生成
set
方法👇👇
现在你要的东西我也有方式进去了,但是你要什么这个关系你得告诉我,所以我们接下来写
配置
👇👇,在applicationContext.xml
文件中告诉ServiceDao的位置
,也就是配置service与dao的关系。
注意
:name
属性对应 service层中的Dao对象的名称,ref
属性就是参照的意思,里边写的是配Bean时,Dao的属性id
❗❗
运行结果👇👇
如果我们将如下代码拿掉,它还会有
关系绑定
吗?👇👇
结果会出现
空指针异常
,显然是没有关系绑定的👇👇
总结
到这里我们
DI
的案例就已经说完了,在DI的入门案例中我们首先删除了使用new的形式创建对象的代码
,接下来给它提供了依赖对象对应的setter方法
,思考一下,这个方法谁调的呢?我们就想,谁要给你往里边传对象呢?是Spring容器,所以这个方法是Spring容器
调的,写好这个以后它们之间的关系必须绑定
,所以我们通过配置
的方式将它们的关系进行了绑定,虽然name和ref两个属性都写的是bookDao,但是意思却不同
,ref的bookDao表示当前容器中对应的Bean的属性id
,而name的bookDao表示的是你现在的service实现类中属性的名称,这是我们需要注意的,这下我们DI的入门案例
就已经讲完了💪💪
最后,如果有什么错误的话,大家可以私信我📬📬,
希望大家多多关注+点赞+收藏 ^_^🙏🙏,你们的鼓励是我不断前进的动力💪💪!!!