Spring 总共大约有20个模块,由1300多个不同的文件构成。
Spring源码阅读可以分为三个路线:IOC,AOP,外部组件。

个人主页:tuzhenyu’s page
原文地址:Spring源码阅读(一)——整体结构

Spring整体结构

Spring框架根据功能可以分为核心容器,AOP切面编程,数据访问和WEB这四个主要的部分。

(一)核心容器

核心容器主要是由spring-beans,spring-core,spring-context和spring-expression组成。

  • spring-beans,spring-core是spring框架的核心包,实现了控制反转和依赖注入的容器功能。

  • 控制反转(IOC)是指把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。

  • 依赖注入(DI)是控制反转的一种实现方式,除却依赖注入还有依赖查找(DL),后来依赖查找被移除所以Spring中的控制反转也被称为依赖注入。依赖注入主要包括:接口注入(Interface Injection),设值注入(Setter Injection)和构造子注入(Constructor Injection)三种方式。

  • BeanFactory 接口是Spring框架中的核心接口,它是工厂模式的具体实现。BeanFactory 使用控制反转对应用程序的配置和依赖性规范与实际的应用程序代码进行了分离。但 BeanFactory 容器实例化后并不会自动实例化 Bean,只有当 Bean 被使用时 BeanFactory 容器才会对该 Bean 进行实例化与依赖关系的装配。

  • spring-context模块构架于 spring-beans和spring-core核心包之上,拓展了BeanFactory生成Spring的上下文环境。ApplicationContext是该模块的核心接口,她是 BeanFactory 的超类,与 BeanFactory 不同,ApplicationContext 容器实例化后会自动对所有的单实例 Bean 进行实例化与依赖关系的装配,使之处于待用状态。

(二)AOP

AOP主要是spring-aop,spring-aspects和spring-instrumentation组成

  • spring-aop是Spring的另一个核心模块,是Aop主要的实现模块。是以JVM的动态代理技术为基础,然后设计出了一系列的Aop横切实现,比如前置通知、返回通知、异常通知等,同时,Pointcut接口来匹配切入点,可以使用现有的切入点来设计横切面,也可以扩展相关方法根据需求进行切入。

  • spring-aspects模块集成AspectJ框架,为AOP提供具体的实现方法。

(三)数据访问

数据访问主要是由spring-jdbc,spring-tx,spring-orm组成。

  • spring-jdbc模块是Spring 提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC。

  • spring-tx模块是Spring JDBC事务控制实现模块

  • spring-orm模块是ORM框架支持模块,主要集成 Hibernate, Java Persistence API (JPA) 和 Java Data Objects (JDO) 用于资源管理、数据访问对象(DAO)的实现和事务策略。

(三)WEB

WEB主要是由spring-web,spring-webmvc组成。

  • spring-web模块为Spring提供了最基础Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IoC容器,也包含一些与Web相关的支持。

  • spring-webmvc模块众所周知是一个的Web-Servlet模块,实现了Spring MVC(model-view-controller)的Web应用。

总结

Spring主要分为核心组件和外部组件两大部分,其中核心组件又可以分为IOC和AOP两部分。因此,spring的源码阅读可以分为三个路线:IOC,AOP,外部组件。

Spring源码阅读(一)——整体结构相关推荐

  1. spring源码阅读(3)-- 容器启动之BeanFactoryPostProcessor

    接着上文<spring源码阅读(2)-- 容器启动之加载BeanDefinition>,当spring加载完所有BeanDefinition时,并不会马上去创建bean,而是先配置bean ...

  2. 【Spring 源码阅读】Spring IoC、AOP 原理小总结

    Spring IoC.AOP 原理小总结 前言 版本约定 正文 Spring BeanFactory 容器初始化过程 IoC 的过程 bean 完整的创建流程如下 AOP 的过程 Annotation ...

  3. Spring源码阅读之bean对象的创建过程

    Spring源码阅读之bean对象的创建过程 ​ Spring是通过IOC容器来管理对象的,该容器不仅仅只是帮我们创建了对象那么简单,它负责了对象的整个生命周期-创建.装配.销毁.这种方式成为控制反转 ...

  4. Spring源码阅读 源码环境搭建(一)

    ring 源码阅读的搭建(一) 一 下载spring源码 进入官方网页:https://spring.io/projects/spring-framework 进入相关的github位置,下载zip包 ...

  5. spring 源码阅读入门

    spring和源码3.0.5下载 http://download.csdn.net/download/haluoyimo/7752753 http://pan.baidu.com/s/1qYnK784 ...

  6. spring源码阅读--aop实现原理分析

    aop实现原理简介 首先我们都知道aop的基本原理就是动态代理思想,在设计模式之代理模式中有介绍过这两种动态代理的使用与基本原理,再次不再叙述. 这里分析的是,在spring中是如何基于动态代理的思想 ...

  7. Spring源码:Spring源码阅读环境搭建

    本篇内容包括:Mac 环境下 gradle 的安装和配置.源码克隆.新建测试类,测试Spring源码 等内容! 第一步:Mac 环境下 gradle 的安装和配置 1.下载安装包 # 到 GitHub ...

  8. spring 源码阅读笔记-从浅到深的解析

    目录 第一章 源码安装 文章目录 目录 前言 一.spring源码下载 二.构建源码及使用 1.源码构建 2.使用构建源码 总结 前言 由于spring的源码常常以语言和高深莫测的地位存在,而源码解析 ...

  9. Spring 源码阅读 之 Spring框架加载

    说起第一次阅读Spring Framework源码,大概还是2010年吧,那个时候还不懂技巧和方法,一头扎在代码的汪洋大海里,出不来了.后面几年偶尔断断续续的也看过几次,都是不得要领,最后都是无疾而终 ...

最新文章

  1. 关于查询ios的app更新的历史版本记录
  2. 考考基础部分,谈谈Java集合中HashSet的原理及常用方法
  3. CPPUNIT的安装和编译
  4. c# winform笔记
  5. Codeforces 1196E Connected Component on a Chessboard
  6. 数据库慢,原来与数据库无关
  7. matlab 2010 工具箱,Matlab2010下使用FULLBNT工具箱實現簡單的靜態貝葉斯網絡及推理...
  8. python一百行代码多少钱_用86行Python代码模拟太阳系
  9. 普通背包问题-枚举算法(《算法竞赛宝典》 第二部 基础算法艺术)
  10. Intel Haswell/Broadwell架构/微架构/流水线 (8)-Broadwell微架构
  11. Visio实现箭头反向
  12. 西安电子科技大学计算机学院推免生资格,西安电子科技大学计算机学院(专业学位)计算机技术保研细则...
  13. 趣拼图——项目演示及代码
  14. Codeforces Problem-1591B Array Eversion
  15. git分支主干同步命令
  16. opencv中的透射变换
  17. 无线通信协议wifi、BLE、zigbee
  18. NVIDIA Jetson之TF卡系统镜像备份与恢复
  19. IC学习笔记——DRV8840
  20. 高山养羊也可以运用GPS卫星定位系统

热门文章

  1. java-net-php-python-java幼儿早教管理系统查重PPT计算机毕业设计程序
  2. Qt编写的项目作品3-输入法V2018
  3. fifo介绍及fifo IP核使用(工程文件获取请参考文末)
  4. serverless-knative serving安装实战
  5. 集合的所有子集的算法
  6. Mysql表数据如何导入到微信云开发数据库中
  7. 【幻灯片制作软件】Focusky教程 | 布局模板
  8. NSWOJ-6的倍数
  9. java 自定义批注_充分利用 Java 的元数据,第 2 部分:自定义批注
  10. <a></a>标签,download属性不下载,而是打开.doc、.txt、.mp3、img,解决方法