spring源码学习(一)


让我们以一个spring面试题,开始本系列文章
面试题目:spring的ioc是什么?在45秒内回答最佳
答:没有ioc之前我们创建对象,都是通过new的方式。如果一个类依赖另外一个类,有可能通过在一个类构造方法里面new,也有可能在类外new了之后传进来,无论用哪一种方式都会使得对象的依赖关系和初始化混乱。如果有了ioc,我们可以通过容器对类进行管理,通过声明的方式把这些类通过容器通过反射自动的注入都别的类里面去。用到的技术,xml(对bean进行定义和解析)、反射(才有可能通过容器把bean注入到另外一个bean里面去)、抽象工厂模式。

spring的发展历史

spring 作者: Rod Johnson
在这里插入图片描述
· 2002 年Rod主要针对J2EE的繁琐问题发表了《Expert One-on-One J2EE Designand Development》,本书包含3万行代码作为Interface 21 Framework;Jurgen和Yann联系Rod将代码开源,并由Yann提出Spring这个词。
· 2003 年Spring 0.9在Apache 2.0协议下发布,Jurgen和Yann成为Interface 21的创始人,Interface 21也支持AspectJ Project,Thomas Risberg负责Spring JDBC,Ben Alex将Acegi Security的代码送给Rod和Juergen。
· 2004 年 Spring Framework 1.0问世。
· 2005 年Spring Framework达40万下载量。
· 2006 年Spring 2.0发布,Spring超过100万次下载。
· 2007 年Interface 21改名为Spring Source,Spring超过300万次下载。
· 2008 年SpringSource买下g2One公司(Groovy andGrails)。
· 2009 年VMWare收购了SpringSource。
· 2013 年VMWare和EMC创建了Pivotal,Spring移到了Pivotal。年底Spring 4.0发布。
· 2016 年Spring4.3发布。

体系架构概述

发展到现在,spring包含四大模块:
Container(IOC容器、最基础)、AOP、Web、DATA
在这里插入图片描述

Container:

spring-Core 、spring-beans 包含了框架的核心实现,包括IOC依懒注入等特性
spring-context 在spring-core 基础上构建它提供一种框架方式访问对象的方法
(Spring-context对core和beans进行封装)

AOP

spring-aop 提供了面向切面编程的丰富支持(程序运行时动态生成代理类,动态代理,java proxy或者cglib)
spring-aspects 提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,比如Eclipse AJDT。(在编译的时候,把要做切面的代码直接切入到程序字节码里面去,从java源代码编译成class的时候和IDE结合)
instrumentation 提供对javaagent 的支持和类加载器(也是动态代理,通过javaagent的方式)
instrumentation-tomcat 专门针对tomcat 进行类转换与加载管理

WEB

spring-web 提供了基本的面向WEB的功能,多文件上传、使用Servlet监听器的IOC容器初始化。一个面向WEB的应用层上下文
web-mvc: 包含MVC 和rest 服务相关组件

DATA

spring-jdbc: 提供了一个JDBC抽象层
spring-tx: 编程式和声明式事物管理
spring-orm:
spring-oxm:
spring-jms:
spring-redis:

Spring Framework 项目模块

在这里插入图片描述
学习spring源码的时候,这么多模块,不可能全部学习完,我们要学习的是设计模式、编程技巧,具体到下面的文章就是IOC和AOP这一块。

spring源码下载和编译

相关资料

spring 项目github 地址
https://github.com/spring-projects
gradle 下载地址
https://services.gradle.org/distributions/gradle-4.2-bin.zip

下载

下载spring fremwork 源码
git clone https://github.com/spring-projects/spring-framework.git
切换到对应分支
git checkout -b v4.3.8 v4.3.8.RELEASE
像这样子,就构建成功啦:
在这里插入图片描述
下一篇文章开始分析IOC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值