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的关系
配完就可以
运行一下试试: