Spring History和spring设计哲学
1、spring history
-
spring起点
2002年10月,Rod Johnson 写了一本名为Expert One-on-One J2EE设计和开发的书。本书由Wrox发布,涵盖了当时Java企业应用程序开发的状态,并指出了Java EE和EJB组件框架的一些主要缺陷。在书中他提出了一个基于普通java类(POJO - 普通旧java对象)和依赖注入的简单解决方案
在本书中,他展示了如何在不使用EJB的情况下构建高质量,可扩展的在线座位预订应用程序。为了构建应用程序,他编写了超过30,000行基础设施代码!它包括许多可重用的java接口和类,如ApplicationContext和BeanFactory。由于java接口是依赖注入的基本构建块,因此将类的根包命名为com.interface21。正如Rod自己后来解释的那样,21中的名字是21世纪的参考 -
spring诞生
书发布后不久,开发人员Juergen Hoeller和Yann Caroff说服Rod Johnson根据基础设施代码创建一个开源项目。Rod,Juergen和Yann 在2003年2月左右开始合作这个项目。正是Yann为新框架创造了“spring”这个名字。根据Rod的说法,Spring在传统J2EE的“冬天”之后代表了一个新的开始
2003年6月,在Apache 2.0许可下发布了0.9版。2004年3月,spring1.0发布。有趣的是,即使在1.0发布之前,Spring也被开发人员广泛采用。 -
spring框架的快速增长
Spring框架的迅速发展自2004年春季2.0 1.0版本在2006年10月到那个时候春天下载冲过100万大关被释放。Spring 2.0具有可扩展XML配置等功能,用于简化XML配置,支持Java 5,附加IoC容器扩展点,支持动态语言,如groovy,aop增强功能和新的bean范围。 -
在Rod的领导下管理弹簧项目的Interface21公司于2007年11月更名为SpringSource。同时Spring 2.5发布。Spring 2.5的主要新功能包括对Java 6 / Java EE 5的支持,对注释配置的支持,类路径中的组件自动检测以及符合OSGi的捆绑包。
-
2007年,SpringSource从基准资本获得了A系列资金(1000万美元)。SpringSource通过来自accel合作伙伴和基准的B系列资金在2008年筹集了额外资金。SpringSource在此期间收购了许多公司(Covalent,Hyperic,G2One等)。2009年8月,SpringSource以4.2亿美元被VMWare收购!几周之内,SpringSource收购了云代工厂,这是一家云PaaS提供商。2015年,云代工厂被转移到非营利性的云代工基金会。
-
2009年12月,春季3.0发布。Spring 3.0具有许多主要功能,例如重组模块系统,支持spring表达式语言,基于java的bean配置(JavaConfig),支持嵌入式数据库(如HSQL,H2和Derby),模型验证/ REST支持以及对Java EE的支持6。
-
2011年和2012年发布了许多次要版本的3.x系列。2012年7月,Rod Johnson离开了春季团队。2013年4月,VMware和EMC与GE合作创建了一家名为Pivotal的合资企业。所有春季应用项目都转移到了Pivotal。
-
2013年12月,Pivotal宣布发布spring framework 4.0。Spring 4.0是Spring框架的重要一步,它包括完全支持Java 8,更高的第三方库依赖(groovy 1.8 +,ehcache 2.1 +,hibernate 3.6+等),Java EE 7支持,groovy DSL等功能。 bean定义,对websockets的支持以及对泛型类型的支持,作为注入bean的限定符。
-
2014年至2017年期间发布了许多春季框架4.xx版本。当前的spring框架版本(4.3.7)于2017年3月发布.Spring framework 4.3.8计划于2017年4月发布,它将是4.x系列中的最后一个。
2017年spring发布了spring5.0版本
2、spring设计哲学
面向对象 思想里 "万物皆对象" Spring里面 "万物皆Bean"。
Spring遵循的一个宗旨:一切皆为Bean 你可以把 Spring 比作一个 "超级工厂" 里面任何Bean 都可以生产。当然里面的IOC容器 是这个超级工厂的 "核心" 所有从Bean都出自这里,我们只要给了 这个工厂 的 "生产说明" 或者说是 "生产清单" (applicationContext.xml),IOC容器就可以生产处我们想要的 Bean。所谓的AOP(面向切面编程)你可以理解为 "横插一杠",因为 这里的 Bean 是 IOC 容器生产的,所以IOC在生产它的时候可以改变它的行为,比如 一个 Bean A要做 发送邮件这个行为,但是我在 "生产说明" 中规定 这个Bean 在做发送邮件这个行为之前,还有一个Bean L要做记录日志行为,所以当这个Bean要发送邮件的时候,先让L 记录日志,然后才是B发送邮件。其实AOP就是在原有的执行顺序中切入一个新的行为。
参考链接
https://www.cnblogs.com/ArtsCrafts/p/Spring.html
https://www.quickprogrammingtips.com/spring-boot/history-of-spring-framework-and-spring-boot.html