【Spring(三)】DI入门案例(XML版)

前言

  前面我们已经演示了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的入门案例就已经讲完了💪💪
经验分享 程序员 微信小程序 职场和发展