前几篇:git
Spring核心技术原理-(1)-经过Web开发演进过程了解一下为何要有Spring?github
Spring核心技术原理-(2)-经过Web开发演进过程了解一下为何要有Spring AOP?spring
前两篇从Web开发史的角度介绍了咱们在开发的时候遇到的一个个坑,而后一步步衍生出Spring Ioc和Spring AOP的概念雏形。Spring从2004年第一个正式版1.0 Final Released发展至今,俨然已经成为了一个生态帝国(开局只有一把枪,装备全靠打!),目前也已经迭代到5.0,拥有诸多的子项目,基本能够解决绝大多数场景的应用!后端
而在进一步学习Spring的核心原理以前,有必要和你们一块儿梳理一下Spring历史版本的变迁,知晓一下每个版本新增了哪些东西,解决了哪些咱们开发中的问题,以便咱们更清楚的理解这个生态帝国是如何一步一发展壮大的!安全
一、Spring 1.xbash
大概在2004年3月24日这一天,Spring Framework 1.0 final正式出如今咱们的视野中,源码项目结构以下:微信
引用依赖以下:网络
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>1.0</version>
</dependency>
复制代码
Spring 1.0当时只包含一个完整的项目,他把全部的功能都集中在一个项目中,其中包含了核心的Ioc、AOP,同时也包含了其余的诸多功能,例如:JDBC、Mail、ORM、事务、定时任务、Spring MVC等。多线程
因为Spring超前的眼光和博大的精神,在第一个版本的时候已经支持了不少第三方的框架,例如:Hibernate、ibatis、模板引擎等。框架
尽管如此,此时的Spring除了最核心的Ioc和AOP以外,其余的模块犹如咱们如今众多的开源项目同样,大可能是对第三方框架的简单封装!我也相信不少我的或企业也基本都维护了一套相似这种的框架供项目开发使用。
此时的Spring还很懵懂,只支持基于XML的配置!关于更多关于Spring 1.0 的信息能够参考:
二、Spring 2.x
Spring 2.x的源码项目结构以下:
引用依赖以下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.0</version>
</dependency>
复制代码
经过上图中和1.0版本的对比,咱们首先能够很直观的感觉到Spring作了哪些改变。
Spring 2.x增长对注解的支持,支持了基于注解的配置。
三、Spring 3.x
Spring在GitHub托管的代码,最先的版本只能看到Spring v3.1.0.M2(github.com/spring-proj…
Spring 3.x支持了基于Java类的配置。
四、Spring 4.x
(1)Spring 4.x新特性:
Spring 4.x全面支持Java 8.0,支持Lambda表达式的使用,提供了对@Scheduled和@PropertySource重复注解的支持,提供了空指针终结者Optional,对核心容器进行增长:支持泛型的依赖注入、Map的依赖注入、Lazy延迟依赖的注入、List注入、Condition条件注解注入、对CGLib动态代理类进行了加强。
Spring 4.x还支持了基于Groovy DSL的配置,提升Bean配置的灵活性。
Spring 4.x开始,Spring MVC基于Servlet 3.0 开发,而且为了方便Restful开发,引入了新的RestController注解器注解,同时还增长了一个AsyncRestTemplate支持Rest客户端的异步无阻塞请求。
(2)简单的思惟导图以下:
五、Spring 5.x
Spring 5.x主要新特性:
六、小结
Spring 1.x、Spring 2.x、Spring 3.x因为版本比较久,而我从开始就是从Spring 4.0 开始用的,因此更多关于之前版本的信息这里解释的不是很全,上述的源码截图只是做为一种直观地感觉,但愿能感觉到Spring版本的变迁过程。
Spring从最初的一城一池,发展到现在已经发展为一个生态帝国,旗下拥有诸多的子项目,从最基本的Spring Ioc/AOP使用,到安全管理,再到大数据,Spring已经逐渐的渗入到各个领域,目前,几乎全部JavaWeb相关的开发均可以在Spring中找到合适的方案,为了在开发的时候,防止重造轮子,下边梳理一下Spring的各个子项目,作到心中有数:
参考文章:
一、《精通Spring 4.x企业应用开发实战》