博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring核心技术原理-(3)-Spring历史版本变迁和如今的生态帝国
阅读量:6208 次
发布时间:2019-06-21

本文共 1943 字,大约阅读时间需要 6 分钟。

前几篇:

前两篇从Web开发史的角度介绍了我们在开发的时候遇到的一个个坑,然后一步步衍生出Spring Ioc和Spring AOP的概念雏形。Spring从2004年第一个正式版1.0 Final Released发展至今,俨然已经成为了一个生态帝国(开局只有一把枪,装备全靠打!),目前也已经迭代到5.0,拥有诸多的子项目,基本可以解决绝大多数场景的应用!

而在进一步学习Spring的核心原理之前,有必要和大家一起梳理一下Spring历史版本的变迁,知晓一下每一个版本新增了哪些东西,解决了哪些我们开发中的问题,以便我们更清楚的理解这个生态帝国是如何一步一发展壮大的!

一、Spring历史版本变迁

1、Spring 1.x

大概在2004年3月24日这一天,Spring Framework 1.0 final正式出现在我们的视野中,源码项目结构如下:

引用依赖如下:

org.springframework
spring
1.0
复制代码

Spring 1.0当时只包含一个完整的项目,他把所有的功能都集中在一个项目中,其中包含了核心的Ioc、AOP,同时也包含了其他的诸多功能,例如:JDBC、Mail、ORM、事务、定时任务、Spring MVC等。

由于Spring超前的眼光和博大的精神,在第一个版本的时候已经支持了很多第三方的框架,例如:Hibernate、ibatis、模板引擎等。

尽管如此,此时的Spring除了最核心的Ioc和AOP之外,其他的模块犹如我们现在众多的开源项目一样,大多是对第三方框架的简单封装!我也相信很多个人或企业也基本都维护了一套类似这种的框架供项目开发使用。

此时的Spring还很懵懂,只支持基于XML的配置!关于更多关于Spring 1.0 的信息可以参考:

2、Spring 2.x

Spring 2.x的源码项目结构如下:

引用依赖如下:

org.springframework
spring
2.0
复制代码

通过上图中和1.0版本的对比,我们首先可以很直观的感受到Spring做了哪些改变。

Spring 2.x增加对注解的支持,支持了基于注解的配置。

3、Spring 3.x

Spring在GitHub托管的代码,最早的版本只能看到Spring v3.1.0.M2(

Spring 3.x支持了基于Java类的配置。

4、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)简单的思维导图如下:

5、Spring 5.x

Spring 5.x主要新特性:

6、小结

Spring 1.x、Spring 2.x、Spring 3.x由于版本比较久,而我从开始就是从Spring 4.0 开始用的,所以更多关于以前版本的信息这里解释的不是很全,上述的源码截图只是作为一种直观地感受,希望能感受到Spring版本的变迁过程。

二、Spring如今的生态帝国

Spring从最初的一城一池,发展到如今已经发展为一个生态帝国,旗下拥有诸多的子项目,从最基本的Spring Ioc/AOP使用,到安全管理,再到大数据,Spring已经逐渐的渗入到各个领域,目前,几乎所有JavaWeb相关的开发都可以在Spring中找到合适的方案,为了在开发的时候,防止重造轮子,下边梳理一下Spring的各个子项目,做到心中有数:


参考文章:

1、《精通Spring 4.x企业应用开发实战》

转载于:https://juejin.im/post/5cea20afe51d455a2f2201e4

你可能感兴趣的文章
验证码(一)
查看>>
如何利用好新浪微博
查看>>
datastage 重启 续
查看>>
从Zabbix数据库中提取内存采集的数据,做内存使用率计算
查看>>
什么是SAS
查看>>
nginx优化与防盗链
查看>>
Openssl的证书格式转换
查看>>
linux 下实现负载均衡群集(NAT方式)
查看>>
我的友情链接
查看>>
linux学习wdlinux学堂
查看>>
修改maven本地仓库位置
查看>>
spring --aop(日志记录)在工程中实际使用
查看>>
有趣的链接
查看>>
你的工作单位也需善待
查看>>
vCenter Converter Standalone使用文档
查看>>
ubuntu16.04配置sonarqube+MySQL
查看>>
在域环境下搭建samba服务器
查看>>
本科毕设论文——基于Kinect的拖拉机防撞系统
查看>>
多款优秀的 JS MVC 框架对比
查看>>
mysql主从复制 lvs+ keepalived
查看>>