一、什么是控制反转(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

最低0.47元/天 解锁文章
1201

被折叠的 条评论
为什么被折叠?



