Spring框架IoC与DI深度解析
需积分: 15 22 浏览量
更新于2024-08-02
收藏 337KB DOC 举报
"这篇Spring学习笔记涵盖了从基础的IoC(控制反转)和DI(依赖注入)概念到Spring对JDBC、Hibernate、Struts1和Struts2的支持。通过具体的XML配置示例,展示了如何配置bean,包括基本注入、属性注入、列表注入、Map注入以及构造方法注入等。"
在Spring框架中,IoC(Inverse of Control)也被称为控制反转,它是将对象的创建和管理交给容器来处理,而不是由对象自身负责。这样可以减少代码间的耦合度,提高系统的灵活性。而DI(Dependency Injection)依赖注入是IoC的一种实现方式,它允许开发者通过配置文件或编程方式,将依赖关系注入到对象中,而不是由对象自行查找或创建依赖。
在给出的XML配置中,我们可以看到Spring如何进行DI:
1. 基本注入:通过`<bean>`标签定义一个对象,并使用`<property>`标签注入属性。例如,创建一个名为"zhangsan"的`Person`对象,设置了"name"和"age"属性。
```xml
<bean id="zhangsan" class="tarena.spring.ioc.Person">
<property name="name" value="张三"/>
<property name="age">
<value>18</value>
</property>
...
</bean>
```
2. 列表注入:使用`<list>`标签可以注入一个数组或列表。例如,给"car"对象的"tels"属性注入电话号码列表。
```xml
<bean id="car" class="tarena.spring.ioc.Car">
...
<property name="tels">
<list>
<value>4948631</value>
<value>2645234</value>
<value>5674567</value>
</list>
</property>
...
</bean>
```
3. Map注入:`<map>`标签用于注入Map类型的属性,如"drivers"属性,其中包含了"正驾"和"副驾"两个条目。
```xml
<bean id="car" class="tarena.spring.ioc.Car">
...
<property name="drivers">
<map>
<entry key="正驾">
<ref bean="zhangsan"/>
</entry>
<entry key="副驾">
<bean class="tarena.spring.ioc.Person">
<property name="name" value="李四"/>
</bean>
</entry>
</map>
</property>
...
</bean>
```
4. 引用注入:使用`<ref>`标签可以引用已定义的bean,如"car"对象的"driver"属性引用了"zhangsan"对象。
```xml
<bean id="car" class="tarena.spring.ioc.Car">
...
<property name="driver" ref="zhangsan"/>
...
</bean>
```
5. 属性注入:对于Properties类型的属性,可以使用`<props>`标签注入键值对,如"car"对象的"props"属性。
```xml
<bean id="car" class="tarena.spring.ioc.Car">
...
<property name="props">
<props>
<prop key="color">Red</prop>
<prop key="weight">1.5t</prop>
<prop key="brand">BMW</prop>
</props>
</property>
...
</bean>
```
6. 构造方法注入:通过在`<bean>`标签中指定构造函数参数,可以实现构造方法注入。例如,创建一个名为"wangwu"的bean并传递参数给构造方法。
```xml
<bean id="wangwu" class="tarena.spring.io" ...>
...
</bean>
```
这里没有提供完整的构造方法注入示例,但通常会包含`<constructor-arg>`标签来指定构造方法的参数。
这些配置示例说明了Spring框架如何通过XML配置文件实现对象的实例化、初始化和装配,展示了Spring的灵活性和强大的依赖管理能力。此外,Spring还支持基于注解的配置,使得代码更加简洁。而对于JDBC、Hibernate、Struts1和Struts2的支持,则涉及到Spring的事务管理、数据访问集成、MVC框架集成等高级特性,这些在实际开发中都是十分重要的。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2011-05-30 上传
102 浏览量
点击了解资源详情
点击了解资源详情
2025-02-17 上传
![](https://profile-avatar.csdnimg.cn/fb34970cb9fb425c8a1795ed9b81c155_cs_zhouhr.jpg!1)
cs_zhouhr
- 粉丝: 3
最新资源
- Windows到Linux入门教程:基础知识与安装指南
- 伟大架构师的抽象层次策略:简化IT解决方案
- JasperReport与iReport中文配置与使用详解
- Oracle分析函数详解与应用示例
- 无线局域网详解:概念、标准与技术应用
- Quartz定时任务开发指南
- <项目名称>操作手册编写规范详解
- Cadence Allegro PCB设计中文手册
- uVision2入门:Keil C51 开发工具教程
- 搭建虚拟域名:解析与配置详解
- DWR中文教程:快速掌握远程方法调用
- 测试人员的思考艺术:超越数字迷思
- WEKA3.5.5用户指南:数据探索与分析
- DWR教程:入门与实践
- EJB3.0实战教程:从入门到精通
- TMS320C6416:600MHz DSP在3G基站高速处理中的关键角色