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. 背景se_SE新作《先驱者》首个内容预告 定于2020年圣诞发售
  2. 【LuoguP3038/[USACO11DEC]牧草种植Grass Planting】树链剖分+树状数组【树状数组的区间修改与区间查询】...
  3. Cocoapods的Podfile常见语法总结
  4. 轻松学c语言编程.pdf等,轻松学编程 轻松学C语言编程pdf
  5. HTML JQuery 技巧总结
  6. elasticsearch-1.7.1 集群搭建
  7. MySQL 8.0 异步复制的三种方式
  8. mybatis中mysql递归查询多级_mybatis+mysql递归查询
  9. java ios开发_使用Java开发iOS应用
  10. 数字经济的网络黑手,中科信安:勒索软件攻击比去年同期增加7倍
  11. 顺序表和链表 相关知识点总结
  12. python是哪个国家的品牌,爬取全国12个热门城市奶茶店铺情况,看看你的城市哪个品牌最多...
  13. 通过Mixamo生成人物动画并导入Unity实现资源可用的方法
  14. C++编译器优化:Copy Elision
  15. 圆圈中最后剩下的数字 ----《剑指offer》面试题45
  16. opensips3.0之新工具opensips-cli
  17. vue3中使用jszip压缩文件
  18. 2019款奔驰GLC:内饰配置新增娱乐信息系统
  19. Python实现公元纪年到干支纪年的转换
  20. java实现redis锁

热门文章

  1. 谷歌浏览器安装elasticsearch head 插件
  2. android button设置边框线
  3. python中空格键怎么写_如何用python通过空格键移动海龟
  4. 史海峰:成为技术领导者 从技术到管理的必经之路丨声网开发者创业讲堂 • 第 5 期
  5. 赛事推荐 | 建筑物细粒度实例分割——2023 IEEE GRSS 数据融合赛道1
  6. ▲ Android 使用RecycleView自定义日历签到效果
  7. 【Python】pinyin模块将中文转为拼音
  8. 米老师讲课 ITOO4.1 ——Java(2)
  9. 进制转换--python实现
  10. 2020车工(中级)考试软件及车工(中级)作业模拟考试