当前位置:首页 > 开发 > 编程语言 > Spring > 正文

spring之运行原理

发表于: 2014-10-22   作者:atongyeye   来源:转载   浏览次数:
摘要: 1 spring容器的功能: 是管理bean,和维护bean之间的关系。 我一般把ApplicationContext理解为一个重HashMap。 2 spring的运行原理: 假设脑海中已经存在了这样的一个spring配置文件,包含了很多bean。 配置文件里包含这样两个bean <bean id="userService" class=&q
1 spring容器的功能:

是管理bean,和维护bean之间的关系。
我一般把ApplicationContext理解为一个重HashMap。

2 spring的运行原理:
假设脑海中已经存在了这样的一个spring配置文件,包含了很多bean。

配置文件里包含这样两个bean
<bean id="userService" class="com.cn.UserService">
     <property name="userName" value="张三"/>
     <property name="leadService" ref="com.cn.LeadService"/>
</bean>
<bean id="leadService" ref="com.cn.LeadService">
      <property name="leadName" value="李四"/>
</bean>

在内存中可以这么理解:
内存 ApplicationContext容器

id                           value
userService (地址:0x123)      com.cn.UserService(userName,leadService)
leadService (地址:0x234)      com.cn.LeadService(leadName)

容器可以通过id获取对象,对象之间也可以相互引用,是不是和Map类似呢。

3 可以通过反射和dom4j理解下内部实现机制
userService=Class.forName("com.cn.UserService");

4 现在来理解IOC和DI应该就变得容易了
IOC 即inversion of control 控制反转,即将控制的权利转移给了容器,由容器去负责管理bean和bean之间的关系。
DI 依赖注入,看一下上面的bean的配置,会发现在容器注入的bean,bean里注入的属性和引用其它的bean,都交给了容器去管理。

有人说DI和IOC其实说的是一回事,只是不同的叫法。我有自己的理解。
IOC是是代码中控制bean对象的创建到容器管理对象生成的转移。
DI是bean之间的注入和引用关系的维护。

题外:
像Action一般都定义为prototype,因为Action会封装实例变量,即有状态对象,非线程安全,而service,dao封装的变量是无状态的,线程安全,定义为singleton。(有兴趣的可以了解一下有状态和无状态对象)

另外,给正在学习spring框架的朋友一点建议,框架底层运用的技术基本上都是反射,HashMap。所以对反射和HashMap等技术先有深刻的理解,对学习框架原理会更有帮助。

spring之运行原理

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
  hadoop的核心思想是MapReduce,但shuffle又是MapReduce的核心。shuffle的主要工作是从Map结束到
一、一语道破jmeter 大家都知道我们在应用jmeter的图形化界面来进行操作,保存后生成的是一个.jmx文
spring的运行原理图: 5.3我们再看spring 对上面案例总结: spring实际上是一个容器框架,可以配置各
1、什么是hibernate hibernate是一个orm框架(object relation mapping 对象关系模型) 属于持久层
1、图解 客户端初始化一个请求,容器通过加载web.xml来获取过滤器,请求经过一些列的过滤器,接着Fi
  这部分的计划是这样的,首先解释JobTracker的启动过程和作业从JobClient提交到JobTracker上;然
  接着上篇来说,TaskTracker端的transmitHeartBeat()方法通过RPC调用JobTracker端的heartbeat()
Jsp运行原理 在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个Servlet。而这个引擎本
Servlet 运行原理 2011-07-19 10:50 146人阅读 评论(0) 收藏 举报 目录(?)[-] <ol style="margin
1.什么是MapReduce? MapReduce是由Google公司的Jeffrey Dean和Sanjay Ghemawat开发的一个针对大规
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号