IoC与DI入门

82 阅读2分钟

IoC与DI入门

就为了一件事情:解耦

从主动new一个对象,到现在由外部提供对象

此过程中,对象创建的控制器,由程序内转移到外部

----------故此思想又被叫做 控制反转


Spring技术做了什么

  • 被IoC管理的对象叫做bean

  • 不用自己造对象,让IoC造,让IoC管

  • IoC帮你把dao和service绑定上,绑关系的过程叫做 依赖注入


如此 实现了充分解耦

  • 使用IoC容器 管理 bean 对象不自己new (这就是IoC)
  • 在Ioc容器内将有依赖关系的bean进行关系绑定(这就是DI)依赖注入

**最终效果:

  • 使用对象的时候,不仅可以从IoC容器中获取
  • 并且获取到的bean已经绑定了所有依赖关系

IoC入门案例(XML版)

估计后面还有@xxx注解版

  • IoC管理什么:service与dao
  • 如何将被管理的对象告知IoC容器:配置
  • 被管理的对象交给IoC容器,如何获取到IoC容器:接口
  • IoC容器得到后,如何从容器中获取bean : 接口方法
  • 使用Spring该导入哪些坐标:

项目结构:

先去写个配置文件

在pom.xml 添加 org.springframwork的坐标,刷新

在resource文件夹下 创建 spring的配置文件 : applicationContext.xml

此时就可以拿bean,但是要拿bean得有IoC容器

XXX.save是 接口实现类写好的方法,这里调一下,证明可以通过IoC拿到目标bean

DI入门案例

回顾一下什么是DI:

在Ioc容器内将有依赖关系的bean进行关系绑定(这就是DI)依赖注入

思考

  • 基于IoC管理bean
  • service中使用new形式创建dao对象: new就耦合了,因此要变
  • service中需要的dao对象 如何进入service: 提供方法
  • service 与 dao之间的关系 如何描述: 配置

实操

修改service中的 BookServiceimpl.java

不直接new

给他添加一个set方法:通过set来引用一个对象,替代之前的new

接着写配置

将bean单标签改成双标签,标签内添加配置,来描述service与dao的关系

配完就可以

运行一下试试: