Spring IoC&DI 入门案例学习笔记
·
一、核心概念
- IoC(控制反转):将对象的创建、管理权限从业务代码中剥离,交给 Spring 容器统一管理,无需手动
new对象,是 Spring 的核心思想。 - DI(依赖注入):Spring 容器为需要依赖的对象(如 Service 依赖 Dao),自动完成依赖对象的赋值注入,是 IoC 思想的具体实现方式。
二、项目文件 & 核心职责
案例
dao

service注入dao

配置文件

测试案例

表格
| 文件名 | 层级 | 核心职责 |
|---|---|---|
BookDaoImpl.java |
Dao 数据访问层实现类 | 实现BookDao接口,定义save()方法模拟数据操作,是被依赖的底层组件 |
BookServiceImpl.java |
Service 业务逻辑层实现类 | 实现BookService接口,声明BookDao依赖属性并提供 setter 方法(Spring 注入入口),save()方法调用 Dao 层方法,实现标准分层调用逻辑 |
applicationContext.xml |
Spring 核心配置文件 | 声明 Spring 约束,配置需要容器管理的 Bean、定义依赖注入规则,是 IoC 容器的核心配置 |
App.java |
程序启动入口(测试类) | 启动 Spring IoC 容器,加载配置文件,从容器中获取 Bean 对象并调用方法,验证功能 |
三、核心配置详解
1. 基础 Bean 配置(IoC 核心)
xml
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
id:Bean 在 Spring 容器中的唯一标识,用于后续获取对象、引用注入class:要交给 Spring 管理的类的全限定名- 效果:Spring 容器启动时,自动创建该类的实例对象,存入容器统一管理
2. Setter 依赖注入配置(DI 核心)
xml
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"/>
</bean>
- 前置条件:注入方
BookServiceImpl必须先配置为 Spring 管理的 Bean <property>标签:通过 setter 方法完成依赖注入name:对应类中的 setter 方法(规则:setBookDao→name="bookDao",取 set 后首字母小写的内容)ref:引用容器中已存在的 Bean 的 id,填入要注入的依赖对象
四、完整执行流程
- 执行
main方法,创建ClassPathXmlApplicationContext,启动 Spring IoC 容器 - 容器加载
applicationContext.xml,解析所有 Bean 配置 - 按配置顺序创建
BookDaoImpl实例(id=bookDao),存入容器 - 创建
BookServiceImpl实例(id=bookService),调用setBookDao方法,将容器中的bookDao对象注入 - 调用
getBean方法,通过 id 从容器中获取对应的 Bean 实例 - 调用实例的方法,执行业务逻辑
五、关键要点
- 只有在配置文件中声明为
<bean>的类,才会被 Spring IoC 容器管理;未配置的类,Spring 无法识别、无法创建对象、无法完成注入。 - Setter 注入的两个必要前提:① 注入方和被注入方都必须是 Spring 管理的 Bean;② 注入方必须提供对应属性的 public setter 方法。
<property>的name值必须和 setter 方法严格对应,ref值必须和被注入 Bean 的id完全一致。
更多推荐

所有评论(0)