1 码农的春天----------Spring来了spring
Spring官网 :http://www.springframework.org数据库
关于Spring的发展起源要回溯到2002年,当时正是Java EE和EJB大行其道的时候,不少知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿,并非全部的项目都须要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。编程
他为了证实本身的想法是正确的,在2001年10月写了一本书《Expert One-on-One J2EE》,介绍了当时Java企业应用程序开发的状况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。在书中,他展现了如何在不使用 EJB 的状况下构建高质量、可扩展的在线座位预留系统。为了构建应用程序,他编写了超过 30,000 行的基础结构代码,项目中的根包命名为 com.interface21
,因此人们最初称这套开源框架为 interface21,这就是 Spring 的前身。缓存
这个小伙子是谁呢?他就是大名鼎鼎的 Rod Johnson(下图),Rod Johnson 在悉尼大学不只得到了计算机学位,同时还得到了音乐学位,更使人吃惊的是在回到软件开发领域以前,他还得到了音乐学的博士学位,反正就是牛逼哄哄的人物。可是如今 Rod Johnson 已经离开了 Spring(2012 年 Rod Johnson 宣布他将要离开 Spring Source ),成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。服务器
在这本书发布后,一对一的 J2EE 设计和开发一炮而红。这本书免费提供的大部分基础架构代码都是高度可重用的。2003 年 Rod Johnson 和同伴在此框架的基础上开发了一个全新的框架命名为 Spring,据 Rod Johnson 介绍 Spring 是传统 J2EE 新的开始,随后 Spring 发展进入快车道。网络
2004 年 03 月,1.0 版发布。架构
2006 年 10 月,2.0 版发布。app
2007 年 11 月,改名为 SpringSource,同时发布了 Spring 2.5。框架
2009 年 12 月,Spring 3.0 发布。运维
2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。
2017 年 09 月,Spring 5.0 发布。
或许想解释清楚 Spring 究竟是什么是件很困难的事情。一般, Spring 是指一个用于构造 JAVA 应用程序的轻量级框架,但这句话包含两个有趣的地方。首先,你能够采用 Spring 来构造任何程序,这一 Apache Struts这样的框架不一样,你不限定于只编写 WEB 应用。其次,以上解释中的“轻量级”并不意味着类数量不多,或者发行包大小很小,实际上,它指的是 Spring 哲学原理的总称——那就是最少的侵入。 Spring 是轻量级的,意味着你只需对你的程序代码作不多改动 ( 倘若有的话 ) ,而得到 Spring 核心带来的好处,你也能够在任什么时候候选择抛弃 Spring ,你会发现这实在很容易。注意,上面这句话只针对 Spring 核心自己——不少附加的 Spring 组件,好比数据访问,须要与 Spring 框架有相对紧密得多的耦合关系。可是,这些耦合带来的好处显而易见。
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而建立的。框架的主要优点之一就是其分层架构,分层架构容许您选择使用哪个组件,同时为 J2EE 应用程序开发提供集成的框架。
3 What is 最少的侵入?
这里解释一下Spring中的侵入式和非侵入式。简单的说,假设咱们想把一些业务代码放到一个框架里。侵入式的作法是要求业务代码”知道”框架的代码,表现为业务代码须要继承框架提供的类,才能很好的和框架结合,使用框架带来的便利。非侵入式则不须要业务代码引入框架代码的信息,即无需继承框架提供的类,从编写者的角度来看,察觉不到框架的存在。例如:使用struts的时候,咱们须要继承一些struts的类,这时struts侵入到了个人业务代码里。使用spring编写一些业务类的时候不须要继承spring特定的类,经过配置完成依赖注入后就可使用,此时,spring就没有侵入到个人代码里。侵入式让业务代码产生对框架的依赖,这些代码不能再框架外使用,不利于代码的复用。可是侵入式可使用户和框架更好的结合,更容易更充分的利用框架提供的功能。非侵入式的代码对框架则没有过多的依赖,能够很方便的迁移到其余地方使用,代码的复用性较好。可是框架和业务代码互动的方式可能就比较复杂。总之,这两种方式各有千秋,各有利弊,主要看实际开发时的权衡选择了。
那么非侵入式的技术体现,即容许在应用系统中自由选择和组装Spring框架的各个功能模块,而且不强制要求应用系统的类必须继承或实现Spring框架的类和接口来达到使用框架的目的。
如何实现非侵入式:
1.引用反射机制,经过动态调用的方式来提供各方面的功能,创建核心组件BeanFactory
2.配合使用Spring框架中的BeanWrapper和BeanFactory组件类最终达到对象的实例建立和属性注入
其实,非侵入式就是不须要继承框架提供的类,而是经过配置完成依赖注入后,就可使用。容许所开发出来的应用系统可以在不一样的环境中自由移植,不须要修改应用系统中的核心代码。
4 Spring的体系结构
Spring是一个分层框架,由七个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了建立,配置,管理bean的方式。
框架图:
(1)核心容器
核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开 ( 工厂方法 ) 。
(2)Spring上下文
Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企业服务,例如JNDI 、 EJB 、电子邮件、国际化、校验和调度功能。
(3)Spring AOP
经过配置管理特性, Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。因此,能够很容易地使 Spring 框架管理的任何对象支持 AOP 。 Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。经过使用 Spring AOP ,不用依赖 EJB 组件,就能够将声明性事务管理集成到应用程序中。
(4)Spring DAo
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不一样数据库供应商抛出的错误消息。异常层次结构简化了错误处理,而且极大地下降了须要编写的异常代码数量(例如打开和关闭链接)。 Spring DAO 的面向 JDBC 的异常听从通用的 DAO 异常层次结构。
(5)Spring ORM
Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map 。全部这些都听从 Spring 的通用事务和 DAO 异常层次结构。
(6)Spring Web模块
Web 上下文模块创建在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。因此, Spring 框架支持与 Jakarta Struts 的集成。 Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工做。
(7) Spring MVC框架
MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。经过策略接口, MVC 框架变成为高度可配置的, MVC 容纳了大量视图技术,其中包括 JSP 、 Velocity 、 Tiles 、 iText 和 POI 。
5 Spring和那些巨头公司之间的爱恨情仇
内容好像有点偏了啊,咱们今天只谈女人,不谈国事,不不不,是只谈历史,不谈技术。
说到Spring,那就不得不说那个哄哄牛逼的Pivotal 公司,记住了,这是一个”富二代”。首先简单介绍一下 Pivotal 公司:
Pivotal 成立于2013年4月,致力于“改变世界构造软件的方式(We are transforming how the world builds software)”,提供云原生应用开发 PaaS 平台及服务,帮助企业客户采用敏捷软件开发方法论,从而提升软件开发人员工做效率、减小运维成本,实现数字化转型、IT 创新,并最终实现业务创新。
截至目前,财富 100 强中超过三分之一的企业使用 Pivotal 云原平生台。Pivotal 部分大型客户在采用 Pivotal 产品后,开发人员与运营人员比例可提升到 200:1,开发人员专一于编写软件代码时间增加了 50%。
看了简介你们可能会有点犯迷糊,这不是一个 2013 年成立的 IT 服务公司吗,和 2002 年发展起来的 Spring 又是怎么扯上关系的呢?其实呀,要提及 Pivotal 公司的起源要追溯到 1989 年的 Pivotal Labs 实验室。
Pivotal Labs 公司
1989 年,Rob Mee 创立的咨询公司 Pivotal Labs,专一于快速的互联网式软件开发,即敏捷编程。创立 Pivotal Labs 的时候,它仍是一家很是小的软件顾问公司,它的主营业务就是与客户合做,帮助客户开发软件。
Pivotal Labs 一直是敏捷开发领域的领导者,为部分硅谷最有影响力的公司塑造了软件开发文化,并树立了良好口碑,其中 Google、Twitter 都曾是 Pivotal Labs 客户。
时间很快到了 2012 年,深受客户喜好的 Pivotal 终于引发了商用软件巨头 EMC 的关注,EMC 在 2012 年以现金方式收购了 Pivotal 并照单全收了它的 200 名员工。
刚开始的时候,公司并无发生太大的变化,只是做为新部门成为了 EMC 的一部分,Pivotal Labs 仍然继续像之前样与客户合做。
可是到 2013 年的时候,EMC 忽然扔下了一颗重磅炸弹。它将 Pivotal Labs 的核心业务分拆出去,成立了一家名为 Pivotal Software 的新公司。这家新公司的股东是 EMC 、 VMware 和通用电气,以前在 EMC 子公司 VMware 担任首席执行官的马瑞兹出任公司的首席执行官。
EMC 和 VMware 分拆出其 Cloud Foundry、Pivotal Labs、Greenplum 等云计算、大数据资源,GE 投资 1.05 亿美圆,成立新公司 Pivotal。新生的 Pivotal 是名副其实的“富二代”,这轮估值高达 10.5 亿美圆。
那么EMC和VMware又有什么关联呢?
2003 年 12 月, EMC 公司宣布以 6.35 亿美圆收购了 VMware 公司。
EMC 于 1979 年成立于美国麻州 Hopkinton 市,1989 年开始进入企业数据储存市场。二十多年来,EMC 全心投注在各项新的储存技术,已得到了 1,300 个已经过或审核中的储存技术专利。不管是全球外接 RAID 储存系统、网络储存亦或是储存管理软件等储存专业领域,EMC 均是业界公认的领导厂商。
EMC 是全球第六大企业软件公司,全球信息基础架构技术与解决方案的领先开发商与提供商。同时也是美国财富五百强之一,在全世界拥有超过四万二千名员工,在全球 60 个国家或地区拥有分支机构。咱们接触比较多就是 EMC 的各类存储产品。
EMC 公司作大 EMC 的秘诀,就是研发与并购双轮驱动,研发与并购的投入占当年营业收入的 22% 左右,并购投入略高于研发。从 2003 年到2 015 年的 12 年间,EMC 总共投入超过 420 亿美圆用于研发和收购。其中,206 亿美圆用于研发,213 亿美圆用于并购,总共并购了 100 多家公司。
Vmware 收购Spring
2009 年是 Spring 企业的一个转折点,VMware 以 4.2 亿美圆收购 Spring Source (3.6亿现金外加5800万股份) 。
2012 年 Rod Johnson 宣布他将要离开 Spring Source 。
EMC 又被收购
2015 年的时候,曾经被大量报道 EMC 考虑被子公司 VMware 收购,让人大跌眼镜,居然能够有这样的骚动做,这是为何呢?
EMC 在 2003 年斥资 6.25 亿美圆收购了 VMware,四年以后,EMC 选择让 VMware 分拆上市,结果独立上市的 VMware 发展愈来愈好,反观 EMC 的各项业务持续陷入低潮。到 2015 年的时候,VMware 的市值已达到约 370 亿美圆,占据了 EMC 总市值的近 75%。
可能各方利益不能达成一致,最终 EMC 却被戴尔(dell)收购。
2015 年 10 月 12 日,戴尔(Dell)和EMC(易安信)公司宣布签署最终协议,戴尔公司与其创始人、主席和首席执行官麦克尔•戴尔,与 MSD Partner 以及银湖资本一块儿,收购 EMC 公司,交易总额达 670亿 美圆,成为科技史上最大并购。
当时业界最关心的云计算软件商 VMware 仍然保持独立上市公司的身份。据悉,EMC 当前持有 VMware 大约 80% 的股权,市值约为 320 亿美圆。而戴尔收购 EMC 其实是项庄舞剑,VMware 才是戴尔收购 EMC 的关键。
并购事件表
上面写的有点乱,你们看完以后也许有点迷糊,在这里从新整理一下这里面几个关键公司的收购时间点:
1989 年,Rob Mee 创立的咨询公司 Pivotal Labs;
2003 年,Rod Johnson 和同伴建立了 Spring;
2003 年,EMC 收购了 VMware 公司;
2009 年,VMware 收购了 Spring ;
2012 年,EMC 又收购了 Pivotal Labs 公司;
2013 年,EMC 、 VMware 和收购来的 Pivotal Labs 公司从新组建了新的公司 Pivotal;
2015 年,戴尔又并购了 EMC;
2018 年,戴尔独立上市
接着说Pivatal公司
上面一系列的商业并购搞的眼花缭乱的,可是你们只要知道 Pivotal 公司出身高贵,来自几个都不太差钱的世界 500 强公司联合组建而成,Pivotal 公司的产品很是的高大上,就连咱们平时使用的 12306 都使用了他们公司的产品。
Pivotal 公司可谓是大牛云集,公司的开源产品有:Spring 以及 Spring 衍生产品、Web 服务器 Tomcat、缓存中间件 Redis、消息中间件 RabbitMQ、平台即服务的 Cloud Foundry、Greenplum 数据引擎、还有大名鼎鼎的 GemFire(12306 系统解决方案组件之一)。
这些著名开源产品背后的开发者都在 Pivotal 公司,其研发团队聚集了全球的一流开发者,Spring Boot 为何如此优秀,或许在这里能够找到一些答案。
Pivotal 中国研发中心在中国建立于 2010 年,它的前身是 EMC Greenplum 部门,其团队成员分布在北京和上海两地,目前正致力于如下产品的研发和服务的提供:Pivotal Web Service (PWS), Pivotal Hadoop (PHD), Hawq 和 Greenplum Database (GPDB)。
毕威拓科技(北京)有限公司(Pivotal中国公司)2015年3月1日正式成立并单独运营。
Pivotal 公司成立以后,于 2014 年发布了 Spring Boot,2015 年发布了 Spring Cloud,2018 年 Pivotal 公司在纽约上市。