spring源码学习环境准备

前言

工作四年了,spring的重要性不言而喻,但是却没系统的学习过spring 源码,感觉好不应该。今年正好趁着机会好好的学习一下,自己写博客的意义在于对看书学习的一个总结,便于以后复习和指正,因为随着工作经验和个人能力的进步,理解的角度和深度都会不一样,这样就可以看以前博客,发现当时自己看书思维的局限性。
主要借鉴的是spring 源码深度解析这本书,使用的是spring3.2版本的源码分析,虽然现在公司和自己平时都使用的4.x版本,但是核心的IOC,AOP,事务等等源码的改变不大。

spring架构

spring源码学习环境准备_第1张图片
spring-overview.png

Core Container

  • Core Container(核心容器)包含有Core、Beans、Context和Expression Language模块。
  • Core和Beans模块是框架的基础部分,提供IoC(转控制)和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。
  • Core模块主要包含Spring框架基本的核心工具类,Spring的其他组件要都要使用到这个包里的类,Core模块是其他组件的基本核心。当然你也可以在自己的应用系统中使用这些工具类。
  • Beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI) 操作相关的所有类。
  • Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块继承了 Beans的特性,为Spring核心提供了大量扩展,添加了对国际化(例如资源绑定)、事件传播、资源加载和对Context的透明创建的支持。Context模块同时也支持J2EE的一些特性,例如EJB、JMX和基础的远程处理。ApplicationContext接口是Context模块的关键。
  • Expression Language 模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。它是 JSP 2.1规范中定义的 unifed expression language的一个扩展。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文(accessiong the context of arrays)、容器和索引器、逻辑和算术运算符、命名变量以及从Spring的 IoC容器中根据名称检索对象。它也支持list投影、选择和一般的list聚合。

Data Access/Integration

Data Access/Integration层包含有 JDBC、ORM、OXM、JMS和Transaction模块
Transaction 模块支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的POJO都适用。

Web

Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以, Spring框架支持与Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。Web层包含了Web、Web-Servlet、Web-Struts和Web-Porlet模块,

AOP

AOP模块提供了一个符合AOP联盟标准的面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性。利用 source-level 的元数据功能,还可以将各种行为信息合并到你的代码中

Test

Test模块支持使用JUnit和TestNG对Spring组件进行测试。

spring源码编译

下载gradle

安装好之后

➜  ~ gradle -version

------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------

Build time:   2017-04-10 13:37:25 UTC
Revision:     b762622a185d59ce0cfc9cbc6ab5dd22469e18a6

Groovy:       2.4.10
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_152-ea (Oracle Corporation 25.152-b02)
OS:           Mac OS X 10.12.4 x86_64

安装git

➜  ~ git --version
git version 2.10.1

安装git成功之后,选择自己的spring版本,
spring3.2.6git地址

git clone https://github.com/spring-projects/spring-framework.git

下载之后

spring源码学习环境准备_第2张图片

编译步骤:

  • 进入到相应的目录下,进行预编译,这一步需要很长时间,学会科学上网
gradlew :spring-oxm:compileTestJava

第二步导入到idea中,File -> New -> Project from Existing Sources -> Select build.gradle
环境准备成功

你可能感兴趣的:(spring源码学习环境准备)