在了解Spring Boot之前应该先了解下Spring,因为Spring Boot的核心是基于Spring构建的。Spring是由Rod Johnson在2002年创建的一个开源框架,Spring在创建到现在一直处于飞速发展之中。目前已经成为J2EE开发中的事实标准。但是随着IT技术的飞速发展,及IT项目变得越来越复杂。如果学习过Spring就知道Spring非常依赖xml文件进行配置,有时一个项目就有几十个xml配置文件,这些繁琐的配置、以及Spring整合第三方框架的配置问题。经常导致开发效率低下,一不小心就出现丢三拉四;有时一不留神就导致发版失败,给公司造成经济损失。
Spring Boot是由Pivotal团队打造的,并在2014年发布的一个全新框架,其设计目标就是用来简化Spring应用的搭建、开发及部署。Spring Boot采用了特定的方式进行配置,从而达到使开发人员不在需要配置繁琐的xml文件。简单的说其实Spring Boot并不是什么新的框架,就是摒弃了xml的配置方式,使用了一种新的配置方式;然后在maven中使用starter的方式整合了很多第三方框架,同时提供了很多默认的配置参数。
Spring Boot官网( https://spring.io/projects/spring-boot/ )有如【图1】一段话:
【图1】
这段话这段话跟我上面的解释大同小异。
Spring Boot在短短四年就已经由1.0发展到2.0了;而且就这短短四年就已经红遍神州大地。无论小公司,还是大企业,都在使用。
打开Spring官网( https://spring.io/ ),映入我们眼帘的是如下一张图【图2】:
【图2】
看图中框住的那块知道,Spring官方对Spring Boot的定位是Build Anything,意思就是Spring Boot可以构建任何东西。Spring Boot旨在快速、高效,使用最少的配置构建Java应用。学完了Spring Boot,还有更高级的Spring Cloud和Spring Cloud Data Flow。
Spring Cloud的定位是Coordinate Anything (协调任何东西)
Spring Cloud Data Flow的定位是Connect Everything (连接任何东西)
仔细斟酌一下Spring Cloud和Spring Cloud Data Flow,发现Cloud和Data 都跟现在最火的技术关联在一起,Cloud对应云,Data对应数据。而Spring Cloud和Spring Cloud Data Flow有基于Spring Boot,所以Spring Boot必须先学。
打开国内比较知名的招聘网站,例如在猎聘网搜索一下,可以发现很多Java相关的职位都对Spring Boot技术有所要求。如下【图3】这个Oralce公司的招聘职位,在招聘的职位描述里就对Spring Boot有要求。
【图3】
Spring Boot嫣然已经成为Java程序员打怪升级的必备技能。就不说Spring Boot有多重要了。
再看下Spring Boot的这个关键字的百度搜索指数( http://index.baidu.com),Spring Boot从2014年推出到现在,Spring Boot在百度的搜索指数一直处于稳步增长的状态中【图4】。说明程序员或者公司对Spring Boot关注度非常高。
【图4】
使用了Spring Boot后,能给开发人员带来哪些好处?能给运维人员带来哪些方便?甚至说能给公司带来哪些经济效益?看图【图5】说话:
【图5】
1.基于Spring
Spring Boot基于Spring,所以Spring有的优点Spring Boot也有,不需要开发人员去学习一个全新的框架,学习门槛相对降低。
2.快速编码
Spring Boot的依赖包都是基于maven的pom文件提供的,而Spring Boot本身就集成了特别多的第三方框架。以前开发Spring应用时,需要用到的第三方框架的库都需要开发人员一个一个去寻找;现在不需要了,有些可能只需引入一个pom.xml,就能把大量需要用到的第三方库自动引入到项目中。所以减少了开发工作量,实现快速编码。
3.模块化
基于Spring Boot开发的项目可以非常简单的实现模块化编程,这样的话可以非常有效的实现项目的分工合作,减少开发过程中的代码冲突。模块化编程还可以非常高效的实现减少代码的改动量,按需修改模块,降低生产发生事故概率。
4.配置简单
在文章开头就说了Spring Boot摈弃了繁琐的xml配置文件,大量的配置文件经常是导致生产事故的原因。Spring Boot大量采用yml形式的配置文件再加上相应的Annotation,从而大大减少了配置文件的个数,因为以前的Spring应用引入一个第三方框架说不定就要添加一个配置文件。举个例子,比如项目中要引入数据库连接池HikariCP,就需要添加一个关于HikariCP数据库连接池的配置文件,但是使用了Spring Boot采用HikariCP可能就只需要那么几行配置就可以了,因为Spring Boot默认集成HikariCP数据库连接池,提供了很多默认的配置。
5.便捷部署
Spring Boot天生就是为了简单、快捷部署而生。SpringBoot内嵌了Tomcat,不需要额外部署应用服务器Tomcat,只需简单一个Java运行环境即可,而且启动的命令也非常简单:java –jar xxx-release.jar。同时Spring Boot结合现在非常火的技术 Docker、Kubernetes可以快速实现集群部署。
6.有效监控
Spring Boot集成了非常高效的监控框架,只要简单引入对spring-boot-start-actuator的依赖,就可以实现对服务性能的监控。结合Spring Cloud就可以实现对整个微服务链路的全天候监控。
> 彩蛋,作者将借助51CTO订阅专栏平台,上线专栏《精讲Spring Boot技术》,感兴趣的学员可添加小助手微信:cto51boke,提前加入专栏兴趣群,让我看到你们的学习热情,一起加速专栏上线!!!
课程中使用Spring Boot相对较新版本2.0.4.RELEASE,文中的例子均是小编在工作中用到的场景、或遇到的问题。目的是让Spring Boot学习者快速上手,同时学扎实Spring Boot是向Spring Cloud迈进的必经之路。课程主要非常三部分:基础篇、进阶篇和项目篇
基础篇(1-15):主要介绍Spring Boot中常用的功能和要点,在这个阶段里将讲到Spring Boot的环境搭建、日志框架logback的使用、获取properties配置文件的常用方式、模板引擎Thymeleaf、跨域访问的实现、HikariCP数据源的使用等,学完这十五篇能达到使用Spring Boot快速搭建项目,实现基本的CURD功能。
进阶篇(16-22):这个阶段主要讲解Spring Boot整合一些现在互联网公司常用到的中间件,包括Spring Boot整合Redis、Spring Boot实现任务调度处理、Spring Boot如何使用消息中间件ActiveMQ实现消息队列处理、如何使用全文检索Elasticsearch、流程引擎Activiti、规则引擎Drools等。
项目篇(23-26):主要使用一个小项目把前22讲说到的技术串起来,目的让大家对这些技术的使用场景有一个全局概念。什么情况场景到这个框架、什么场景用到那个框架。认真的学完,并加以思考;达到举一反三,触类旁通。差不多就可以正在的开发Spring Boot项目了。一句话:高徒出名师。
1.有Java语言开发基础,对Spring、Maven有一定了解的在校学生、初学者或者自学者
2.对新技术Spring Boot感兴趣的开发者
3.有传统行业IT项目经验,以后想往Spring Cloud微服务发展的工作人员
4.想对Spring Boot有一个整体了解的相关人员
开发环境及用到的相关技术
1.开发工具:Eclipse(对IDEA熟悉的人员可以自行使用IDEA)
2.使用JDK 的版本为1.8
3.使用Spring Boot的版本为2.0.4.RELEASE
使用的Maven版本为3.5.0
其中Spring Boot 2.0.4版本要求JDK最低版本为1.8,所以不能随意改变;但是Eclipse和Maven的版本可以选择高一点或者低稍许的版本都没问题,不要差太远即可。
用到的相关技术: