大话Spring Framework发展史
前言
Spring框架,距今已经走过了十几个年头,是目前最受欢迎的企业级 Java 应用程序开发框架;当然,Spring已不再是简单的一个框架了,由此开发出的还有Spring Boot、Spring Cloud、Spring Data、Spring Security等一系列基于Spring Framework的项目。
作为一名Java程序员,在面试时,Spring Framework是技术面试必须经过的一道门槛,如果还有谁不知道Spring Framework是个啥,估计要被人耻笑三分了。今天不说技术,单纯地捋一把Spring Framework的发展史。
背景
话说Spring框架,不得不提它产生的技术背景。在Spring技术之前,J2EE兴起,使用过J2EE的程序员都知道,J2EE的学习成本极高,开发速度慢,开发出来的程序性能消耗也高,已经跟不上当时应用程序的需要了。
在2002年,Rod Johnson(一位音乐博士)撰写了一本名为《Expert One-on-One J2EE设计和开发》的书,在该书中,主要概括了当时Java企业应用程序开发的现状,指出了JavaEE和EJB框架的缺陷,并且基于普通Java类和依赖注入的思想提出来一个更为简单的解决方案,这就是Spring框架核心思想的萌芽。
Spring 1.0
有了核心理念还不够,Rod Johnson博士说干就干;于2003年6月,在Apache 2.0 许可证下发布了0.9版本,并于2004年3月发布了1.0版本。
在Spring1.0版本中,源码只有一个包,该包中包含了AOP、BEANS、CONTEXT、CORE、JDBC、ORM等,并且仅支持XML配置的方式。
Spring 2.X
2006年10 月,Spring2.0发布,增加了对注解的支持,实现了基于注解的配置;
2007年11月,发布Spring2.5,新增的特性如下:
- 添加可扩展的XML配置功能,用于简化XML配置;
- 支持JDK5;
- 添加额外的IOC容器扩展点,支持动态语言(如Groovy,AOP增强功能和新的Bean范围 );
Spring 3.0
2009年12月,Spring3.0发布,新增的特性如下:
- 模块重组系统;
- 支持Spring表达式语言(Spring Expression Language,SpEL);
- 基于Java的Bean配置(JavaConfig);
- 支持嵌入式数据库:HSQL、H2等;
- 支持REST;
- 支持JDK6;
*Spring 4.0
2013年12月,发布Spring4.0,新增的特性如下:
- 全面支持Java8
- 支持Lambda表达式;
- 支持Java8的时间和日期API;
- 支持重复注解;
- 支持Java8的Optional;
- 核心容器增强
- 增加泛型依赖注入;
- 增加Map依赖注入;
- 增加List依赖注入;
- 支持lazy注解配置懒加载;
- 支持Condition条件注解;
- CGLIB动态代理增强;
- 支持基于GroovyDSL定义Bean
- Web增强
- 增强SpringMVC,基于Servlet3.0开发;
- 提供RestController注解;
- 提供AsyncRestTemplate支持客户端的异步无阻塞请求;
- 增加对WebSocket的支持;
Spring5.0
2017年9月,Spring5.0发布,其新增特性如下:
- 升级到Java8、JavaEE7
- 废弃低版本,将Java8、JavaEE 7作为最低版本要求;
- 兼容Java9;
- 兼容JavaEE8;
- 反应式编程模型,增加WebFlux模块;
- 升级SpringMVC,增加对最新的API(Jackson等)的支持;
- 增加函数式编程模式;
- 重构源码,部分功能使用Lambda表达式实现;
参考资料:
https://blog.csdn.net/jlh912008548/article/details/83241513
https://www.w3cschool.cn/wkspring/pesy1icl.html
https://docs.spring.io/spring/docs/5.0.17.RELEASE/spring-framework-reference/overview.html#overview-history
https://baike.baidu.com/item/spring框架/2853288?fr=aladdin
https://www.liaoxuefeng.com/wiki/1252599548343744/1266263217140032