spring源码分析

Posted wangpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring源码分析相关的知识,希望对你有一定的参考价值。

spring有三个核心包:bean,core,Context,这三个包是上层特性功能的基础。

1、spring的设计理念

上面介绍了spring的三个核心组件,如果要在它们中选出核心,那么非bean组件了。spring就是面向bean编程。

Bean在spring中的作用就像Object对OOP的意义一样,

spring解决了一个非常关键的问题,它可以让你把对象之间的依赖关系转而用配置文件管理,也就是他的依赖注入机制,

而这个注入关系在一个叫Ioc的容器中管理,那么在Ioc容器中又是什么?

就是被Bean包裹的对象。spring正是通过把对象包装在Bean中从而达到管理这些对象及做一系列额外操作的目的的。

它这种设计策略完全类似于java实现OOP的设计理念,当然java本身的设计要比Spring复杂太多太多,但是他们都是构建一个数据结构,

然后根据这个数据结构设计他的生存环境,并让它在这个环境中按照一定的规律不停的运动,在它们不停运动中设计一个系列与环境

或者与其他个体完成信息交换。这样想来我们用到其他光剑大概都是类似的设计理念。

2、核心组件如何协同工作

前面说bean是spring中的关键因素,那么Context和Core又有何作用呢?前面把Bean比作一场演出中的演员,Context就是这场演出的舞台背景,而core应该就是演出的道具了。

我们知道bean包装的是Object。而Object必然有数据,如何给这些数据提供生存环境就是Context要解决的问题,对Context来说他就是要发现每个bean之间的关系,为他们建立这种关系

并且维护好这种关系。所以Context就是一个bean关系的集合,这个关系集合又叫Ioc容器,一旦建立起这个Ioc容器,Spring就可以为你工作了。Core组件有什么用武之地呢?

其实Core就是发现、建立和维护每个Bean之间的关系所炫需要的一系列工具,从这个角度来看,把Core组件叫做Util更能让你理解。

3、Bean组件

前面已经说明了Bean组件对spring的重要性,下面看看Bean组件是怎么设计的。bean组件在beans包下。

在这个包下所有类主要解决了3件事:Bean的定义、Bean的创建、对bean的解析。

对Spring的使用者来说唯一需要关心的就是Bean的创建,其他两个由Spring在内部帮你完成,对你来说是透明的。

 

以上是关于spring源码分析的主要内容,如果未能解决你的问题,请参考以下文章

Spring源码分析

Spring事务源码分析专题JdbcTemplate使用及源码分析

09Spring源码-分析篇-DI源码分析

spring源码学习spring的远程调用实现源码分析

Spring源码分析——源码分析环境搭建

Spring 循环引用源码分析