Spring框架,SpringBoot、SpringIO的历史和源源
概述
Spring框架是在Java开发中⼴泛使⽤的框架之⼀,是SSH中还能持久热门的长青树。在Struts 2被安全漏洞打击的⼀撅不正,在RESTful、微服务流⾏的今天,Spring仍然在扛着Java在这些web开发⽅⾯的⼤旗。
Spring框架由⼤量的模块及其提供的⼀系列服务构成。其中包括组件容器,⽤于构建横向关注⾯向业务的编程⽀持,安全框架,数据访问框
架,Web应⽤程序框架和测试组件的⽀持类等。所有这些组件都通过依赖注⼊架构模式关联在⼀块。依赖注⼊(IOC,也称为控制反转)使得设计和测试松散耦合软件组件变得⾮常⽅便。⽬前Spring框架版本的是5.0.4,下⼀个版本5.05即将发布。
多年以来,Spring框架⼀直保持持续快速的增长。基本上所Java企业级应⽤程序开发基础架构中都会包括Spring框架。然⽽,将所有需要的Spring组件集成和配置颇耗⼒⽓。包括在gradle和maven中设置库依赖项,然后使⽤xml,annotations或java代码配置所需的spring bean。
Spring开发⼈员也意识了到这是个头疼的问题,希望寻求⾃动化⼯具来⾃动完成这个⼯作。于是引⼊了Sprint Boot。
Spring boot采取定制地⽅法构建Sprint应⽤。这意味着对于Spring的每个主⽤例,Spring boot都定义⼀组默认的组件依赖关系和组件的⾃动
spring-boot-starter-配置。 Spring boot使⽤⼀系列的预制启动项来实现这个功能。⽐如,要构建⼀个Sprint Web应⽤程序,你只需添加 spring-boot-starter-
spring-boot-starter-mail的依赖。 Spring boot还有⼀些很酷的功能,例如在应⽤中嵌⼊web的依赖;要使⽤Sprint email库,只需添加对spring-boot-starter-mail
web
应⽤服务器(jetty 或者tomcat),基于groovy和健康、度量监控的命令⾏界⾯。
Spring boot使Java开发⼈员能够快速发起⼀个包含所有必需的Spring组件的新项⽬。
在本⽂主要介绍Spring框架和Spring boot发展历史。
Spring框架的历史
起点
2002年10⽉,Rod Johnson撰写了⼀本名为《Expert One-on-One J2EE设计和开发》的书。本书由Wrox出版,概括了当时Java企业应⽤程序开发的现状,指出了Java EE和EJB组件框架中的⼀些主要
缺陷。在这本书中,他提出了⼀个基于普通Java类和注⼊依赖的更简单的解决⽅案。以下是书中提出的⼀些问题:
将⼯作流逻辑集中到抽象超类中是反转控制的⼀个例⼦。与传统的由类库⽤户代码调⽤库代码的⽅法不同,在这种⽅法中,超类中的框架代码调⽤⽤户代码。反转控制是框架的基础,它倾向于⼤量使⽤模板⽅法模式。
在书中,他展⽰了如何在不使⽤EJB的情况下构建⾼质量,可扩展的在线座位预定程序。为了构建这个程序,他编写了超过30000⾏的基础结构代码(⽜逼)!其中包含了⼤量可重⽤的Java的接⼝和类,例如ApplicationContext和BeanFactory等。由于Java的接⼝是依赖注⼊的基本构建块,他将这些类的根包命名为com.interface21。正如罗德后来解释的那样,21这个是指21世纪,寓意对21世纪的展望。
《Expert One-on-One J2EE设计和开发》⼀炮⾛红。书中附带的免费基础架构代码都⾼度可重⽤,很快⼀些有眼⼒见的开发⼈员就在他们的项⽬中使⽤了。 Wrox也为该书提供了源代码和勘误表的⽹页,也有⼀个在线论坛做问题讨论。如今16年过去了,这本书和他提出的⼀些原则仍然还在指导着⾼质量的Java Web应⽤程序构建。笔者强烈建议,所有有志于这⽅⾯的码农可以搞⼀份收藏,备⽤查看,如果有需要的话给⾍⾍留⾔。
Spring的诞⽣
在本书发布后不久,开发者Juergen Hoeller和Yann Caroff说服Rod Johnson基于书上的代码创建⼀个开源基础框架的项⽬。 于是在2003年2⽉左右由Rod,Juergen和Yann⼀起创建了⼀个项⽬,并且Yann为新框架起了⼀个很诗意的名字"Spring"。寓意着要给处于"冬天"的传统J2EE 带来新开始。
Rod Johnson的书以⾮常详尽,翔实和实⽤的⽅式介绍了J2EE的最佳实践。从编码标准,陈规,bean实体,单元测试,设计决策,持久性,缓存,EJB,model-2表⽰层,视图,验证技术还有性能等⽅⾯都有翔实的论述。书中案例是带领⼤家做个java项⽬开发的绝佳之旅,从开发现状、制约因⼦,风险及⾄最佳决策。它不光是⼀本教科书,还是⼀个Java开发的知识库。
2003年6⽉,Spring 0.9以Apache 2.0许可协议发布。 2004年3⽉Spring 1.0版发布。实际上在1.0发布之前,Spring就已经得到开发⼈员的⼴泛使⽤。 2004年8⽉,Rod Johnson,Juergen Hoeller,Keith Donald和Colin Sampaleanu共同创⽴了interface21,,⼀家专注于Spring咨询,培训和⽀持的公司。
Yann Caroff在不久就离开了团队。 Rod Johnson也在2012年离开了Spring团队。Juergen Hoeller则⼀直是Spring的活跃的开发者。Spring快速发展
⾃2004年发布1.0版本以来,Spring框架得到迅速发展。Spring 2.0于2006年10⽉发布,截⽌当时,Sp
ring的下载量超过100万。 Spring 2.0具有可扩展的XML配置功能,⽤于简化XML配置,还⽀持Java 5,额外的IoC容器扩展点,⽀持动态语⾔(如groovy,aop增强功能和新的bean范围)。
2007年11⽉Interface21公司更名为SpringSource。同时发布了Spring 2.5。 Spring 2.5中的主要新功能包括⽀持Java 6 和Java EE 5,⽀持配置注释,⽀持⾃动检测和兼容组件的类路径和OSGi兼容bundle。
2007年,SpringSource从benchmark capital获得了1000万美元A轮投资。 SpringSource在2008年通过来accel partners 和 benchmark 的B轮投资,筹集了更多的资⾦。此期间它还收购了多家公司(Covalent, Hyperic, G2One等)。 2009年8⽉,SpringSource以4.2亿美元被VMWare收购,SpringSource⼜在⼏周内收购了cloud foundry,这是⼀家云PaaS供应商。 2015年,cloud foundry转移到了⾮营利的cloud foundry基⾦会。
2009年12⽉,Spring 3.0发布。 Spring 3.0具有许多重要特性,如模块重组系统,⽀持Spring表达式语⾔,基于Java的bean配置(JavaConfig),嵌⼊式数据库(如HSQL,H2和Derby)⽀持,模型验证和REST⽀持,以及对Java EE 6的⽀持。
2011年和2012年发布了许多3.x系列的⼩版本。2012年7⽉,Rod Johnson离开了Spring团队。2013年4⽉,VMware和EMC通过GE投资创建了⼀家名为Pivotal的合资企业。所有的Spring项⽬都转移到了Pi
votal。
2013年12⽉,Pivotal宣布发布Spring框架4.0。 Spring 4.0是Spring框架的⼀个重⼤版本升级,包含了对Java 8的全⾯⽀持,更⾼版本的第三⽅库依赖(groovy 1.8+,ehcache 2.1+,hibernate 3.6+等),Java EE 7的⽀持,bean定义的groovy DSL,websockets的⽀持,以及注⼊bean限定符泛型⽀持。
2014年⾄2017年期间发布了许多Spring框架4.x.x版本。
Spring 5.0 GA版本于2017年9⽉28⽇发布。Spring 5.0开始⽀持JDK 8和Java EE 7,同时兼容JDK9。全⾯⽀持Servlet 3.1,还引⼊了⼀个全新的模块Spring WebFlux⽤于替代⽼话的 spring-webmvc;对Kotlin也有了更好的⽀持。
Spring Boot的历史
2012年10⽉,Mike Youngstrom在Spring jira中创建了⼀个功能需求,要求在Spring框架中⽀持⽆容器Web应⽤程序体系结构。他建议通过main⽅法引导的Spring容器内配置Web容器服务。
这⼀需求促成了2013年初开始的Spring Boot项⽬的开发。2014年4⽉,Spring Boot 1.0.0发布。从那以后,⼀些Spring Boot⼩版本开始出现。
Spring Boot 1.1(2014年6⽉):改进的模板⽀持,gemfire⽀持,elasticsearch和apache solr的⾃动配置。
Spring Boot 1.1
Spring boot 1.2
Spring boot 1.2(2015年3⽉):升级到servlet 3.1/tomcat 8/jetty 9和spring 4.1,⽀持banner/jms /SpringBoot Application注释。
Spring boot 1.3(2016年12⽉):升级到spring4.2,新的spring-boot-devtools,缓存技术的⾃动配置
(ehcache,hazelcast,redis,guava和infinispan)以及完全可执⾏的jar⽀持。
Spring boot 1.4(2017年1⽉):升级到spring 4.3,couchbase/neo4j⽀持,启动失败分析和RestTemplateBuilder。
Spring boot 1.4
Spring boot 1.5(2017年2⽉):⽀持kafka /ldap,第三⽅库升级,放弃对CRaSH⽀持和执⾏器⽇志终端⽤以动态修改应⽤程序⽇志级Spring boot 1.5
别。
Spring boot的简便性使java开发⼈员能够快速⼤规模地应⽤于项⽬。 Spring boot可以说是Java中开发基于RESTful微服务Web应⽤的最快⽅法之⼀。它也⾮常适合docker容器部署和快速原型设计。
springboot框架是干嘛的⽬前Spring boot 最新版本是2.0.0,于2018年3⽉1⽇发布,新版本特点有:
基于 Java 8,⽀持 Java 9;⽀持 Quartz 调度程序;⽀持嵌⼊式 Netty,Tomcat, Undertow 和 Jetty 均已⽀持 HTTP/2;执⾏器架构重构,⽀持 Spring MVC, WebFlux 和 Jersey;对响应式编程提供最⼤⽀持;引⼊对 Kotlin 1.2.x 的⽀持,并提供了⼀个 runApplication 函数,⽤Kotlin 通⽤的⽅式启动 Spring Boot 应⽤程序。
Spring IO和Spring Boot
2014年6⽉,Spring io 1.0.0发布。 Spring io代表预定义应⽤类库和依赖关系(包括Spring⼯程和第三⽅库)依赖维护平台,Sppring io可以完美的⽀持Maven和Gradle。这意味着如果你使⽤特定的Spring IO版本创建项⽬,则⽆需配置你所使⽤的库的版本。请注意,这包括Spring库和⼤多数流⾏的第三⽅库。Spring boot启动器⼯程也是Spring io的⼀部分。例如,如果你使⽤的是spring io 1.0.0,则在添加启动器项⽬的依赖关系时,不需要指定spring boot版本。它会⾃动设定它为spring boot 1.1.1.RELEASE。
在概念上spring io由基础层模块和执⾏层领域特定运⾏时(DSRs)组成。基础层包括core Spring模块和关联的第三⽅依赖关系,可确定不会有冲突。执⾏层提供的DSRs,简化为⽣产准备的构建、基于JVM的⼯作负荷等。 Spring boot是Spring IO提供的执⾏层DSRs之⼀,还有⼀个DSRs是Grails。
使⽤spring boot和直接使⽤spring io。
有两种⽅法可以⽤来构建Spring应⽤程序:使⽤spring boot和直接使⽤spring io。
需要注意的是,通常每当新的Spring框架版本发布时,都会伴随着新的Spring boot版本,然后是新的sprint io版本发布。
2015年11⽉,Spring io 2.0.0发布。版本提供了新的模块和依赖关系,包括Spring Boot 1.3。2016年7⽉,Spring io团队决定使⽤按字母顺序的版本⽅案。 Spring IO使⽤城市名称为⼤版本,⽤⼀个字母来表⽰⼩版本。因此,根据所使⽤的各个组件,你的应⽤程序可能需要选择合宜版本。⼀个新名称发布的,表⽰⼀个维护版本发布,你可以在不影响代码的使⽤。
2016年9⽉,⾸个按字母顺序排列和城市命名的Spring io平台版本Athens发布了。它包含sprint boot 1.4和其他第三⽅库升级。此
后,Athens发布了多个服务版本(SR1,SR2,SR3和SR4)。
2017年3⽉, spring io平台Brussels -SR1发布。它使⽤最新的spring boot版本1.5.2.RELEASE。
⽬前最新版本为Brussels-SR7,于2018年1⽉31⽇发布,下⼀个版本Cairo-RC1也在提供了初步使⽤版本,⽀持模块如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论