spring的ioc原理
来源:互联网 发布:codelite mac 编辑:程序博客网 时间:2024/05/16 06:16
spring ioc原理详解
springiocstringhashmapobjectbean
控制反转/依赖注入
首先了解一下IOC(DI):---》
IOC(DI):
这是我对Spring的IOC的体会。DI其实就是IOC的另外一种说法:控制的什么被反转了?就是:获得依赖对象的方式反转了。
如果对这一核心概念还不理解控制的什么被反转了?就是:获得依赖对象的方式反转了。:这里引用一个叫Bromon的blog上找到的浅显易懂的答案:
IoC与DI
首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。
那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。如果你还不明白的话,我决定放弃。
IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。关于反射的相关资料请查阅java doc。
下面来让大家了解一下Spring到底是怎么运行的。
Java代码
1
2
3
4
5
6
分析:首先是applicationContext.xml
Java代码
13
14
15
他有一个类phz.springframework.test.Cat
Java代码
19
20
21
22
23
24
25
26
实现了phz.springframework.test.Animal接口
Java代码
27
28
29
很明显上面的代码输出I
那么到底Spring是如何做到的呢?
接下来就让我们自己写个Spring
首先,我们定义一个Bean类,这个类用来存放一个Bean拥有的属性
Java代码
30
31
32
33
34
35
一个Bean包括id,type,和Properties。
接下来Spring
Map配置可以像下面的
Java代码
36
37
38
39
40
41
42
43
44
45
46
47
Spring是怎样保存上面的配置呢?,代码如下:
Java代码
48
49
50
51
52
- spring 的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring IOC的原理
- Spring 的 IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- spring的ioc原理
- spring的ioc原理
- Spring的IOC原理
- 遍历数组 iterator方法和for方法
- 构建高并发高可用的电商平台架构实践
- 设计模式(二十一)观察者模式(Observer)-行为型
- PHP 文件读入到数组
- Java多线程系列--“基础篇”08之 join()
- spring的ioc原理
- oracle简单的新闻发布管理系统之数据建立
- hibernate新闻管理类型管理ACTION
- 处理新闻分类的DAO
- Struts2之constant配置详解
- Oracle索引及使用详解
- bzoj2535 [Noi2010]Plane 航空管制2 [贪心+堆]
- ORACLE触发器详细创建
- javascript表单验证正则表达式