《Spring Boot极简教程》第2章 Spring Boot简史小结参考资料

第2章 Spring Boot简史

Java Web开发涉及的技术比较繁杂,涉及到很多开发框架和工具(Java, Scala, Kotlin, Clojure,Groovy, Grails,Gradle, Maven, JDBC,Mysql, oracle, mongodb, Tomcat,Jetty,Spring,Struts,Hibernate,Mybatis,JPA,JSP,velocity,freemarker,thymeleaf ,Redis,... ),而且它们各有所长,并不是一个完善的体系。这对程序员能进行Jave Web开发,带来了一定的技术门槛和学习成本。

有没有一个像“航空母舰(Aircraft Carrier)”式的威力强大的武器,可以整合这一切呢?答案就是:Spring Boot。

2.1 用SpringBoot创造一切吧

build anything with Spring Boot

SpringBoot让创建独立的,生产环境的基于Spring的应用更加快捷简易。 大部分Spring Boot Application只要一些极简的配置,即可“一键运行”。

SpringBoot的特性如下[1]:

  • 创建独立的Spring applications
  • 能够使用内嵌的Tomcat, Jetty or Undertow,不需要部署war
  • 提供定制化的starter poms来简化maven配置(gradle相同)
  • 追求极致的自动配置Spring
  • 提供一些生产环境的特性,比如特征指标,健康检查和外部配置。
  • 零代码生成和零XML配置

Spring由于其繁琐的配置,一度被人认为“配置地狱”,各种XML、Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因。而Spring Boot更多的是采用Java Config的方式,对Spring进行配置。

我们企业级软件的目标是提供稳定健壮的服务,以实现其商业价值。为了满足这些需求,服务开发者需要能够快速构建和迭代新的应用,同时应用的架构是可扩展的,便携式的,富弹性的,可以进行频繁的更新。SpringBoot正式为此而诞生[2]。

2.2 SpringBoot起源

SpringBoot是伴随着Spring4.0诞生的;

从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架;SpringBoot帮助开发者快速启动一个Web容器;SpringBoot继承了原有Spring框架的优秀基因;SpringBoot使得基于Spring的开发过程更加简易。

Change is inevitable, that's the only constant. Become the Future You Imagine (Rob Mee, Pivotal CEO)[3]

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

多年以来,Spring IO平台饱受非议的一点就是大量的XML配置以及复杂的依赖管理。在去年的SpringOne 2GX会议上,Pivotal的CTO Adrian Colyer回应了这些批评,并且特别提到该平台将来的目标之一就是实现免XML配置的开发体验。Boot所实现的功能超出了这个任务的描述,开发人员不仅不再需要编写XML,而且在一些场景中甚至不需要编写繁琐的import语句。

然而,Spring Boot并不是要成为Spring IO平台里面众多“Foundation”层项目的替代者。Spring Boot的目标不在于为已解决的问题域提供新的解决方案,而是为平台带来另一种开发体验,从而简化对这些已有技术的使用。对于已经熟悉Spring生态系统的开发人员来说,Boot是一个很理想的选择,不过对于采用Spring技术的新人来说,Boot提供一种更简洁的方式来使用这些技术。[4]

2.3 SpringBoot在整个Spring生态中

2.3.1 Spring生态顶级项目

作为当前主流的企业框架Spring,它提供了一整套相关的顶级项目,能让开发者快速的上手实现自己的应用。请看下图“Spring航空母舰”:

Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作了。

Spring Boot:旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。

Spring Framework:即通常所说的spring 框架,是一个开源的Java/Java EE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。

Spring Cloud:微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。

Spring XD:是一种运行时环境(服务器软件,非开发框架),组合spring技术,如spring batch、spring boot、spring data,采集大数据并处理。

Spring Data:是一个数据访问及操作的工具包,封装了很多种数据及数据库的访问相关技术,包括:jdbc、Redis、MongoDB、Neo4j等。

Spring Batch:批处理框架,或说是批量任务执行管理器,功能包括任务调度、日志记录/跟踪等。

Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

Spring Integration:面向企业应用集成(EAI/ESB)的编程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。

Spring Social:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。

Spring AMQP:消息队列操作的工具包,主要是封装了RabbitMQ的操作。

Spring HATEOAS:是一个用于支持实现超文本驱动的 REST Web 服务的开发库。

Spring Mobile:是Spring MVC的扩展,用来简化手机上的Web应用开发。

Spring for Android:是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,提供RestTemplate来访问Rest服务。

Spring Web Flow:目标是成为管理Web应用页面流程的最佳方案,将页面跳转流程单独管理,并可配置。

Spring LDAP:是一个用于操作LDAP的Java工具包,基于Spring的JdbcTemplate模式,简化LDAP访问。

Spring Session:session管理的开发工具包,让你可以把session保存到redis等,进行集群化session管理。

Spring Web Services:是基于Spring的Web服务框架,提供SOAP服务开发,允许通过多种方式创建Web服务。

Spring Shell:提供交互式的Shell可让你使用简单的基于Spring的编程模型来开发命令,比如Spring Roo命令。

Spring Roo:是一种Spring开发的辅助工具,使用命令行操作来生成自动化项目,操作非常类似于Rails。

Spring Scala:为Scala语言编程提供的spring框架的封装(新的编程语言,Java平台的Scala于2003年底/2004年初发布)。

Spring BlazeDS Integration:一个开发RIA工具包,可以集成Adobe Flex、BlazeDS、Spring以及Java技术创建RIA。

Spring Loaded:用于实现java程序和web应用的热部署的开源工具。

Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。

2.3.2 Spring cloud子项目

目前来说spring主要集中于spring boot(用于开发微服务)和spring cloud相关框架的开发。spring cloud子项目包括:

Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。

Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。

Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

2.4 SpringBoot核心组件

SpringBoot核心组件

2.5 SpringBoot版本历史

SpringBoot项目源码:https://github.com/spring-projects/spring-boot SpringBoot学习示例:https://github.com/netgloo/spring-boot-samples

版本历史参考:https://github.com/spring-projects/spring-boot/releases

2.6 SpringBoot学习成本

正因为Spring Boot是与Spring一脉相承的,所以对于广大的Java开发者而言,对于Spring的学习成本几乎为零。

在实践Spring Boot时学习重点,或者说思维方式改变的重点在于:

1)对于REST的理解,这一点尤为重要,需要从设计、开发多个角色达成共识,很多时候都是对于HTTP 1.1协议以及REST的精髓不理解,导致REST被「盲用」而产生一些不好的效果。

2)对于YAML的理解和对于JavaConfig的理解,这两点相对较为简单,本质上是简化了xml文件,并提供等价的配置表述能力。

小结

SpringBoot继承了原有Spring框架的优秀基因;SpringBoot简化了使用Spring的过程。

参考资料

1.http://projects.spring.io/spring-boot/ 2.https://pivotal.io/spring-app-framework#buildanything 3.https://pivotal.io/ 4.http://www.infoq.com/cn/articles/microframeworks1-spring-boot 5.http://blog.csdn.net/zeb_perfect/article/details/51945350 6.http://projects.spring.io/ 7.SpringBoot官网文档: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏纯洁的微笑

springcloud(一):大话Spring Cloud

研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud。在使用了一段时间后发现Spring...

3728
来自专栏搜云库

Spring Cloud(一)服务的注册与发现(Eureka)

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控...

25310
来自专栏一个会写诗的程序员的博客

【Spring Boot 实战开发】第1讲 Kotlin 的极简特性之:隐式类型与函数式编程《Spring Boot 2.0极简教程》—— 基于 Gradle + Kotlin 的企业级应用开发最佳实

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。在 Java 开发领域的诸多...

834
来自专栏Java后端技术栈

这些优秀的 Spring Cloud 开源软件,你知道几个?

参考来源:https://github.com/SpringForAll/、Spring Cloud中文网https://springcloud.cc/

763
来自专栏恰同学骚年

Spring Boot 1.5.x 基础学习示例

  今年从原来.Net Team“被”转到了Java Team开始了微服务开发的工作,接触了Spring Boot这个新瓶装旧酒的技术,也初步了解了微服务架构。...

923
来自专栏程序你好

用Spring Boot颠覆Java应用开发

1142
来自专栏Java架构沉思录

为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行...

851
来自专栏一个会写诗的程序员的博客

第2章 Spring Boot简介小结参考资料

Java Web开发涉及的技术比较繁杂,涉及到很多开发框架和工具(Java, Scala, Kotlin, Clojure,Groovy, Grails,Gr...

602
来自专栏纯洁的微笑

【重磅】Spring Boot 2.0权威发布

就在今天Spring Boot 2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2...

3955
来自专栏JAVA烂猪皮

最近刷爆朋友圈的一道面试题

最近在网上有一道面试题掀起了劲爆的浪潮,好多家公司都模仿提问了这么一道面试题,而且好多人也都在讨论这道面试题要是自己回答的话该怎么回答!这道题也是在个网站上刷爆...

1144

扫码关注云+社区

领取腾讯云代金券