Spring 控制反转(IoC)教程:从概念到实践

一、什么是控制反转(IoC)?

控制反转(Inversion of Control,简称IoC)是一种设计思想,核心是将对象的创建、管理和依赖关系的建立从程序代码中转移到外部容器(Spring IoC容器)。传统开发中,我们需要手动new对象并设置依赖(如UserService userService = new UserServiceImpl();),而IoC模式下,这些工作由Spring容器完成,程序只需“被动接收”容器注入的对象。

1. IoC的核心价值

  • 解耦:对象不再依赖具体的实现类,而是依赖接口,更换实现时无需修改代码(如UserService依赖UserDao接口,更换UserDao的实现类只需修改容器配置)。

  • 集中管理:所有对象由Spring容器统一创建和管理,减少重复代码。

  • 可测试性:通过容器注入模拟对象(如单元测试中的Mock对象),方便测试。

二、Spring IoC容器

Spring IoC容器是实现IoC思想的工具,负责实例化、配置和管理局域内的对象(称为Bean)。常见的容器类型有两种:

1. BeanFactory

  • 基础容器:提供最基本的IoC功能(如创建Bean、注入依赖)。

  • 特点:延迟初始化(Lazy Initialization),即只有在获取Bean时才创建对象,适合资源有限的场景。

2. ApplicationContext

  • 高级容器:继承自BeanFactory,增加了更多企业级功能(如AOP支持、消息资源处理、事件发布)。

  • 常用实现类

    • ClassPathXmlApplicationContext:从类路径读取XML配置文件(如applicationContext.xml)。

    • AnnotationConfigApplicationContext:从Java配置类读取配置(推荐,符合现代开发习惯)。

  • 特点:立即初始化(Eager Initialization),启动时创建所有单例Bean,适合大多数应用场景。

三、Bean的配置方式

Spring支持三种Bean配置方式:XML配置Java注解Java配置(推荐注解+Java配置的组合)。

1. XML配置(传统方式)

通过XML文件定义Bean的类、属性和依赖关系。

示例

src/main/resources下创建applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 定义UserService Bean -->
    <bean id="userService" class="com.example.service.UserServiceImpl">
        <!-- 注入UserDao依赖(构造器注入) -->
        <cons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值