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编程的 ...
随机推荐
- c# 基础switct---case用于处理多条件的定值的判断
题目:李四的年终工作评定,如果定为A级,则工资涨500元,如果定为B级,则工资涨200元,如果定为C级,工资不变,如果定为D级工资降200元,如果定为E级工资降500元. 设李四原工资为5000,请用 ...
- PAT Advanced 1134 Vertex Cover (25) [hash散列]
题目 A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at ...
- git 提交部分修改的文件,以及如何撤回已经add的文件
命令 1.git status //查看修改文件状态 ,可以看到哪些add了哪些没add 注意:如果此时出现了有些文件不想添加到暂存区却添加进去了,需要撤回 git reset HEAD 全部撤销gi ...
- 关于luoguU67856 数列一题
本题采用累加法 首先这个式子\[a_n = ka_{n-1}+b\]的通项不用我说了吧 然后就是累加法 \[S_n = \sum_{i=1}^{n} a_i = \sum_{i=1}^{n} ka_{ ...
- Oauth2.0详解及安全使用
引言:刚刚参加工作的时候接到的第一个任务就是接入新浪的联合登录功能,当时新浪用的还是oauth1.0协议.接入的时候没有对oauth协议有过多的了解,只是按照开放平台的接入流程进行开发,当时还在想这么 ...
- js 选中div中的文本
function selectText(element) { var text = document.getElementById(element); if (document.body.create ...
- Angular(三)
Angular开发者指南(三)数据绑定 数据绑定AngularJS应用程序中的数据绑定是模型和视图组件之间的数据的自动同步. AngularJS实现数据绑定的方式可以将模型视为应用程序中的单一来源 ...
- POJ-2031 Building a Space Station (球的最小生成树)
http://poj.org/problem?id=2031 Description You are a member of the space station engineering team, a ...
- 内网部署Docker版本Gitlab
Gitlab部署: 1. 还原备份文件后记得拷贝gitlab-secrets.json,不然会遇到500错误 2. 下载Docker以及依赖项rpm包 3. 在外网机器下载镜像 a. 拉取——Dock ...
- PAT甲级——1001 A+B Format (20分)
Calculate a+b and output the sum in standard format – that is, the digits must be separated into gro ...