“你们好,我是草莓君!所谓站得高,尿的远。站在Java巨人的肩膀上,手持SpringBoot暴风大剑,驰骋在召唤师峡谷(编程语言平台)的战场上,你觉得你的水晶(python、nodejs、Ruby...)还能挺过20分钟吗?”前端
Java从诞生之初到如今已经有20多年的历史。在过去一段时间内,java一直饱受质疑,但是它依然紧紧的坐在全球开发者使用量上的第一名。Java可以一步步走向高峰,spring框架起到了浓墨重彩的角色。java
Spring 框架最开始的部分是由Rod Johnson于2000年为伦敦金融界提供独立咨询业务时写出来的。在《Expert One-On-One J2EE Development Without EJB》一书中,他进一步拓展了他的代码,以阐述“如何让应用程序能以超出当时大众所惯于接受的易用性和稳定性与J2EE平台上的不一样组件合做”的观点。node
很难想象Rod Johnson的学历,真的让好多人大吃一惊,他是悉尼大学的博士,然而他的专业不是计算机,而是音乐学。不明白那个秃顶的脑壳瓜里怎么会同时拥有如此高深的计算机技术和高雅的艺术细胞,只能惊为神人。秃脑壳瓜并无让Rod Johnson变得难看,好几个同窗一致认为这家伙长得很酷。他看去是一个典型的英国绅士,虽然他好像出生在澳大利亚,可是如今住在伦敦。提及话来也是一板一眼,有条有理。python
在被模仿的同时,Spring并无停下脚步。它继续在其它领域不断发展:移动开发,社交API集成、安全管理、NoSQL数据库、云计算和大数据等等都是它正在涉足和创新的领域,其前景更加广阔,甚至已经造成与传统的JavaEE平台平起平坐之势。web
###spring1.xspring
2004年3月,Spring1.0正式发布数据库
2003年6月,Spring Framework 第一次以 Apache 2.0 许可证下发布0.9版本,2004年3月,Spring1.0正式发布。 对于Spring1.0,其源码只有一个包,在该包中包含了aop、beans、context、core、jdbc、orm等。对于此时的版本,Spring1.0仅支持XML配置的方式。编程
2006年10 月,Spring2.0发布。缓存
对于2.0,Spring主要增长了对注解的支持,实现了基于注解的配置。 在2007年11月,发布Spring2.5,该版本具有的特性有:tomcat
2009年12月,Spring3.0发布
Spring3.0主要具备的特性有:
2013年12月,发布Spring4.0
对于Spring4.0是Spring版本历史上的一重大升级。其特性为:
2017 年 09 月,Spring 5.0 发布
对于spring而言,spring框架的生态环境已经很是丰富,下图是spring框架所包含的子项目:
随着使用 Spring 进行开发的我的和企业愈来愈多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring 的边界不断的进行扩充,到了后来 Spring 几乎能够作任何事情了,市面上主流的开源软件、中间件都有 Spring 对应组件支持,人们在享用 Spring 的这种便利以后,也遇到了一些问题。
Spring 每集成一个开源软件,就须要增长一些基础配置,慢慢的随着人们开发的项目愈来愈庞大,每每须要集成不少开源软件,所以后期使用 Spirng 开发大型项目须要引入不少配置文件,太多的配置很是难以理解,并容易配置出错,到了后来人们甚至称 Spring 为配置地狱。
Spring 彷佛也意识到了这些问题,急需有这么一套软件能够解决这些问题,这个时候微服务的概念也慢慢兴起,快速开发微小独立的应用变得更为急迫,Spring 恰好处在这么一个交叉点上,于 2013 年初开始的 Spring Boot 项目的研发,2014年4月,Spring Boot 1.0.0 发布。
Spring Boot 诞生之初,就受到开源社区的持续关注,陆续有一些我的和企业尝试着使用了 Spring Boot,并迅速喜欢上了这款开源软件。直到2016年,在国内 Spring Boot 才被正真使用了起来,期间不少研究 Spring Boot 的开发者在网上写了大量关于 Spring Boot 的文章,同时有一些公司在企业内部进行了小规模的使用,并将使用经验分享了出来。从2016年到2018年,使用 Spring Boot 的企业和我的开发者愈来愈多,咱们从 Spring Boot 关键字的百度指数就能够看出。
固然 Spring Boot 不是为了取代 Spring ,Spring Boot 基于 Spring 开发,是为了让人们更容易的使用 Spring。看到 Spring Boot 的市场反应,Spring 官方也很是重视 Spring Boot 的后续发展,已经将 Spring Boot 做为公司最顶级的项目来推广,放到了官网上第一的位置,所以后续 Spring Boot 的持续发展也被看好。
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。用个人话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了不少框架的使用方式。
Spring Boot 简化了基于 Spring 的应用开发,经过少许的代码就能建立一个独立的、产品级别的 Spring 应用。 Spring Boot 为 Spring 平台及第三方库提供开箱即用的设置,这样你就能够有条不紊地开始。Spring Boot 的核心思想就是约定大于配置,多数 Spring Boot 应用只须要不多的 Spring 配置。采用 Spring Boot 能够大大的简化你的开发模式,全部你想集成的经常使用框架,它都有对应的组件支持。
Spring Boot 对开发效率的提高是全方位的,咱们能够简单作一下对比:
在没有使用 Spring Boot 以前咱们开发一个 web 项目须要作哪些工做:
可能你还须要考虑各个版本的兼容性,jar 包冲突的各类可行性。
那么使用 Spring Boot 以后咱们须要开发一个 web 项目须要哪些操做呢?
上面的 N 步和下面的2步造成巨大的反差,这仅仅只是在开发环境搭建的这个方面。
Spring Boot 对测试的支持不可谓不强大,Spring Boot 内置了7种强大的测试框架:
咱们只须要在项目中引入 spring-boot-start-test依赖包,就能够对数据库、Mock、 Web 等各类状况进行测试。 Spring Boot Test 中包含了咱们须要使用的各类测试场景,知足咱们平常项目的测试需求。
Spring Boot 让配置变简单,说到这里咱们就须要了解一下 Spring Boot 的核心思想:约定优于配置。那么什么是约定优于配置呢?
约定优于配置(convention over configuration),也称做按约定编程,是一种软件设计范式,旨在减小软件开发人员需作决定的数量,得到简单的好处,而又不失灵活性。
本质是说,开发人员仅需规定应用中不符约定的部分。例如,若是模型中有个名为 User 的类,那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时,例如将该表命名为”user_info”,才需写有关这个名字的配置。
提及 Spring Boot 让部署变简单,就不得不说 Spring Boot 内嵌容器。内嵌容器不仅让部署变得简单,其实在开发调试阶段也会带来很是大的便利性,对比以往开发 Web 项目时配置 Tomcat 的繁琐,会让你们使用 Spring Boot 内嵌容器开发时有更深的感触。使用 Spring Boot 开发 Web 项目,让咱们不须要关心容器的环境问题,专心写业务代码便可。
Jenkins 是目前持续构建领域使用最普遍的工具之一,Jenkins 是一个独立的开源自动化服务器,可用于自动化各类任务,如构建,测试和部署软件。Jenkins 能够经过本机系统包 Docker 安装,甚至能够经过安装 Java Runtime Environment 的任何机器独立运行。
说直白一点 Jenkins 就是专门来负责如何将代码变成可执行的程序包,将它部署到目标服务器中,并对其运营状态(日志)进行监控的软件。自动化、性能、打包、部署、发布、发布结果自动化验证、接口测试、单元测试等等关于咱们打包测试部署的方方面面 Jenkins 均可以很友好的支持。
使用 Jenkins 部署 Spring Boot 项目很是简单,只须要前期作一些简单的配置,当咱们须要发布项目时只须要点击项目对应的发布按钮,就能够将项目从版本库中拉取、打包、发布到目标服务器中,大大简化了运维后期的部署工做。
虚拟化技术的发展给咱们带来了更多的可能性,咱们能够利用容器化技术,将 Spring Boot 项目作成镜像,根据容器集群的策略来实现弹性扩容、动态部署等。因此 Spring Boot + Docker + Jenkins 会将 Spring Boot 项目的部署作得更简单化、智能化。
能够说 Spring Boot 就是一款自带监控的开源软件,在设计之初就考虑到应用的监控问题,专门提供了一款监控组件来完成这个工做,这个组件就是 Spring Boot Actuator 。
Spring Boot Actuator 是 Spring Boot 提供的对应用系统监控的集成功能,能够查看应用配置的详细信息,例如自动化配置信息、建立的 Spring beans 以及一些环境属性等。
固然 Spring Boot Actuator 虽然能够监控一个 Spring Boot 应用的健康状况,实际上如今的系统都是须要不少的服务相互配合来完成工做,如何经过一个监控软件来监控因此的 Spring Boot 项目将变得比较紧迫。
在开源界也有人意识到了这个问题,而且基于 Spring boot actuator 作出了一款强大的监控软件,这个软件就是 Spring Boot admin 。
Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每一个应用都认为是一个客户端,经过 HTTP 或者使用 Eureka 注册到 admin server 中进行展现,Spring Boot Admin UI 部分使用 AngularJs 将数据展现在前端。
Spring Boot Admin 是一个针对 spring-boot 的 actuator 接口进行UI美化封装的监控工具。他能够:在列表中浏览全部被监控 spring-boot 项目的基本信息,详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各类配置信息(好比数据源、缓存列表和命中率)等,还能够直接修改logger的level。
使用 Spring Boot Admin 不只能够监控 Spring Boot 项目,还能够监控 Spring Cloud 项目。
这五大特性构成了 Spring Boot 做为微服务中间件的基础,又提供了SpringCloud的基础设施。
Spring Boot 就是叼!!