一、核心概念

  1. IoC(控制反转):将对象的创建、管理权限从业务代码中剥离,交给 Spring 容器统一管理,无需手动new对象,是 Spring 的核心思想。
  2. 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 方法(规则:setBookDaoname="bookDao",取 set 后首字母小写的内容)
    • ref:引用容器中已存在的 Bean 的 id,填入要注入的依赖对象

四、完整执行流程

  1. 执行main方法,创建ClassPathXmlApplicationContext,启动 Spring IoC 容器
  2. 容器加载applicationContext.xml,解析所有 Bean 配置
  3. 按配置顺序创建BookDaoImpl实例(id=bookDao),存入容器
  4. 创建BookServiceImpl实例(id=bookService),调用setBookDao方法,将容器中的bookDao对象注入
  5. 调用getBean方法,通过 id 从容器中获取对应的 Bean 实例
  6. 调用实例的方法,执行业务逻辑

五、关键要点

  1. 只有在配置文件中声明为<bean>的类,才会被 Spring IoC 容器管理;未配置的类,Spring 无法识别、无法创建对象、无法完成注入。
  2. Setter 注入的两个必要前提:① 注入方和被注入方都必须是 Spring 管理的 Bean;② 注入方必须提供对应属性的 public setter 方法。
  3. <property>name值必须和 setter 方法严格对应,ref值必须和被注入 Bean 的id完全一致。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐