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设计哲学的更多相关文章

  1. Spring系列(零) Spring Framework 文档中文翻译

    Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...

  2. spring history &design Philosophy

    Spring简介 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而, ...

  3. spring事务管理器设计思想(二)

    上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见 ...

  4. spring事务管理器设计思想(2)

    spring事务管理器设计思想(二) 上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当 ...

  5. The History of spring

    Spring的出现  Spring最早出现对早期J2EE规范复杂性的回应 .虽然有些人一直认为Java EE和Spring处于竞争中,但Spring实际上是对Java EE的补充.Spring编程模型 ...

  6. Spring history&Design Philosophy 简单介绍~

    SPRING框架的介绍和历史 Spring Framework是一个开源Java应用程序框架,最初是基于依赖注入(DI)和控制反转(IoC)的原理开发的. Spring Framework已经成长为控 ...

  7. 跟vczh看实例学编译原理——一:Tinymoe的设计哲学

    自从<序>胡扯了快一个月之后,终于迎来了正片.之所以系列文章叫<看实例学编译原理>,是因为整个系列会通过带大家一步一步实现Tinymoe的过程,来介绍编译原理的一些知识点. 但 ...

  8. Spring MVC - 配置Spring MVC

    写在前面的话: 现在开始一段新的学习历程:Spring MVC.还是按照原来的三步走学习模式(what.why.how)进行讲解. 1.Spring MVC是什么(what) Spring MVC属于 ...

  9. Spring MVC 和 Spring 总结

    1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合. 2). AOP编程的 ...

随机推荐

  1. ant design for vue select 数据回显问题

    例如: 想要回显id为1的温度, 结果直接在select框中显示了1,而不是选中了温度, 此时因为select中的value是string类型, 而我们设置的id是number类型, 对应不上, 所以 ...

  2. 协议(Protocol)

    协议(Protocol)的基本概念 协议的声明看起来比较类似于Java中一个类的接口,但是和接口不同的是:协议没有父类也不能定义实例变量. 协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法 ...

  3. jupyter notebook的扩展插件

    具体安装使用,请参考 https://github.com/ipython-contrib/IPython-notebook-extensions

  4. urlopen error [errno 10060]的解决思路

    当用多线程爬取某个网站的数据的时候,爬取一段时间后,总出现urlopen error [errno 10060]的错误,结果线程无端的被挂掉,一开始的解决思路是每次连接的时候换用不同的useragen ...

  5. PAT甲级——1108.Finding Average (20分)

    The basic task is simple: given N real numbers, you are supposed to calculate their average. But wha ...

  6. 【ccf- csp201412-2】z字形扫描

    //ccf-Z字形扫描 #include<iostream> #include<cmath> using namespace std; #define N 500 int ma ...

  7. 吴裕雄--天生自然C语言开发:作用域规则

    #include <stdio.h> int main () { /* 局部变量声明 */ int a, b; int c; /* 实际初始化 */ a = ; b = ; c = a + ...

  8. RDD(四)——transformation_key_value类型

    这里所有算子均只适用于pairRDD.pairRDD的数据类型是(k,v)形式的键值对: PartitionBy(Partitioner) 对pairRDD进行分区操作,如果原有的partioner和 ...

  9. windows cmd下netstat查看占用端口号的进程和程序

    其实很简单,大家可以在cmd窗口 C:\Documents and Settings\Administrator>netstat -help 显示协议统计信息和当前 TCP/IP 网络连接. N ...

  10. vue2.0学习之路由

    下载vue-router: cnpm install vue-router --save router/main.js /*引入所需要的组件*/ import VueRouter from 'vue- ...