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
Spring History和spring设计哲学的更多相关文章
- Spring系列(零) Spring Framework 文档中文翻译
Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...
- spring history &design Philosophy
Spring简介 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而, ...
- spring事务管理器设计思想(二)
上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见 ...
- spring事务管理器设计思想(2)
spring事务管理器设计思想(二) 上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当 ...
- The History of spring
Spring的出现 Spring最早出现对早期J2EE规范复杂性的回应 .虽然有些人一直认为Java EE和Spring处于竞争中,但Spring实际上是对Java EE的补充.Spring编程模型 ...
- Spring history&Design Philosophy 简单介绍~
SPRING框架的介绍和历史 Spring Framework是一个开源Java应用程序框架,最初是基于依赖注入(DI)和控制反转(IoC)的原理开发的. Spring Framework已经成长为控 ...
- 跟vczh看实例学编译原理——一:Tinymoe的设计哲学
自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...
- Spring MVC - 配置Spring MVC
写在前面的话: 现在开始一段新的学习历程:Spring MVC.还是按照原来的三步走学习模式(what.why.how)进行讲解. 1.Spring MVC是什么(what) Spring MVC属于 ...
- Spring MVC 和 Spring 总结
1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...
随机推荐
- PAT Advanced 1051 Pop Sequence (25) [栈模拟]
题目 Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, -, N and ...
- android 设置无标题栏主题
<application android:theme="@style/Theme.AppCompat.Light.NoActionBar">
- python-day7爬虫基础之Ajax数据爬取
前几天一直在忙老师的项目,就没有继续学python,也没有写什么收获,今天晚上有空看看书,边看边理解着写吧: 首先说一下,我对Ajax的理解,就是有时候我们在浏览某个网页的时候,只要我们鼠标一直往下滑 ...
- 复杂json解析方式[GsonFormat]
针对开发人员来讲,善于用工具,事半功倍. 干货: 1.IntelliJ IDEA 通过GsonFormat插件将JSONObject格式的String 解析成实体 插件地址:https://plugi ...
- \_\_getattribute\_\_
__getattribute__ 一.__getattr__ 不存在的属性访问,触发__getattr__ class Foo: def __init__(self, x): self.x = x d ...
- 基于JSP+Servlet开发在线租车系统 java 源码
运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以.IDE环境: Eclipse,Myeclipse,IDEA都可以tomcat环境: Tomcat 7.x,8. ...
- 2019深圳Android千人开发者大会【NEW·无界】
报名地址:https://www.hdb.com/dis/mjcsegnslu 安卓巴士技术社区是中国领先的安卓开发者社区,现已聚集超过85万开发者,数年来一直致力于IT从业者的知识分享服务. 安卓巴 ...
- Tarjan算法:求解无向连通图图的割点(关节点)与桥(割边)
1. 割点与连通度 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulation Point).一个没有关节点的 ...
- 2.监控利器nagios手把手企业级实战第一部
1. 什么是Nagios? Nagios是一款开源的网络及服务的监控工具,功能强大,灵活性强,需要注意的是,其服务端只能在linux上面安装. Nagios可以进行分布 ...
- Rails render collection 的魔法
都知道的, 在 Rails 的 View 里边渲染集合的时候, 会用到 render 方法参数的 collection 选项 1 <%= render partial: "produc ...