Spring Boot 是由 Pivotal 团队提供用来简化 Spring 的搭建和开发过程的全新框架。随着近些年来微服务技术的流行,Spring Boot 也成了时下炙手可热的热点技术。
Spring Boot 去除了大量的 xml 配置文件,简化了复杂的依赖管理,配合各种 starter 使用,基本上可以做到自动化配置。Spring 可以做的事情,现在用 Spring boot 都可以做。
这套 Spring Boot 框架快速入门教程以大量示例讲解了 Spring Boot 在各类情境中的应用,让读者可以跟着笔者的思维和代码快速理解并掌握。适用于 Java 开发人员,尤其是初学 Spring Boot 的人员和需要从传统 Spring 转向 Spring Boot 开发的技术人员。
# spring、springboot、springcloud的区别
### Spring(有广义与狭义之分)
广义:
**Spring**是一个生态体系(也可以说是技术体系),是集大成者,它包含了Spring Framework、Spring Boot、Spring Cloud等(还包括Spring Cloud data flow、spring data、spring integration、spring batch、spring security、spring hateoas),可以参考链接:https://spring.io/projects,如下图所示(部分截图):
![](https://img-blog.csdnimg.cn/2019052319463637.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3psMXpsMnpsMw==,size_16,color_FFFFFF,t_70)
狭义上则为Spring Framework
###Spring Framework
Spring Framework是整个spring生态的**基石**,它可是硬生生的消灭了Java官方主推的企业级开发标准EJB,从而实现一统天下。Spring官方对Spring Framework简短描述:为依赖注入、事务管理、WEB应用、数据访问等提供了核心的支持。Spring Framework专注于企业级应用程序的“管道”,以便开发团队可以专注于应用程序的业务逻辑。
笔者要提醒的是,千万不要把Spring和Spring Framework搞混淆了,很多文章都错误的定义了spring:spring是一个一站式的轻量级的java开发框架,核心是控制反转(IoC)和面向切面(AOP),针对于开发的WEB层(springMVC)、业务层(IoC)、持久层(jdbcTemplate)等都提供了多种配置解决方案。这是Spring Framework的定义,至于Spring,是整个生态。
但是,无论Spring Framework接口如何简化,设计如何优美,始终无法摆脱**被动**的境况:由于它自身并非容器,所以基本上不得不随JavaEE容器启动而装载,例如Tomcat、Jetty、JBoss等。然而Spring Boot的出现,改变了Spring Framework甚至整个Spring技术体系的现状(摘自小马哥的《SpringBoot编程思想》)。
### Spring Boot(可理解为Spring Framework的扩展)
Spring Boot这家伙简直就是对Java企业级应用开发进行了一场浩浩荡荡的革命。如果稍微有几年工作经验的老油条,应该都记得以前的Java Web开发模式:Tomcat + WAR包。WEB项目基于spring framework,项目目录一定要是标准的WEB-INF + classes + lib,而且大量的xml配置。如果说,以前搭建一个SSH架构的Web项目需要1个小时,那么现在应该10分钟就可以了。
Spring Boot能够让你非常容易的创建一个单机版本、生产级别的基于spring framework的应用。然后,"just run"即可。Spring Boot默认集成了很多第三方包,以便你能以最小的代价开始一个项目。
我们看看官方对Spring Boot的定义:
> Spring Boot is designed to get you up and running as quickly as possible, with minimal upfront configuration of Spring. Spring Boot takes an opinionated view of building production-ready applications.
即Spring Boot为快速启动且最小化配置的spring应用而设计,并且它具有用于构建生产级别应用的一套固化的视图(摘自小马哥的《SpringBoot编程思想》)。这里的固化的视图,笔者认为可以理解成Spring Boot的约定,因为Spring Boot的设计是约定大于实现的。
### Spring Cloud(springboot在微服务方面上的子集)
最后就是大名鼎鼎的Spring Cloud了,Spring Cloud事实上是一整套**基于Spring Boot的微服务解决方案**。它为开发者提供了很多工具,用于快速构建分布式系统的一些通用模式,例如:配置管理、注册中心、服务发现、限流、网关、链路追踪等。
如下图所示,很好的说明了Spring Boot和Spring Cloud的关系,Spring Boot是build anything,而Spring Cloud是coordinate anything,Spring Cloud的每一个微服务解决方案都是基于Spring Boot构建的:
![](https://img-blog.csdnimg.cn/20190523194710605.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3psMXpsMnpsMw==,size_16,color_FFFFFF,t_70)
如下图所示,是spring主页介绍Spring Cloud的配图,我们可以看到,分布式微服务每一个环节,Spring Cloud都提供了对应的组件支持:
![](https://img-blog.csdnimg.cn/20190523194726977.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3psMXpsMnpsMw==,size_16,color_FFFFFF,t_70)
- springboot概述
- springboot构建restful服务
- spring构建一个RESTful Web服务
- spring定时任务
- 消费RESTful Web服务
- gradle构建项目
- maven构建项目
- springboot使用jdbc
- springboot应用上传文件
- 使用LDNA验证用户
- 使用 spring data redis
- 使用 spring RabbitTemplate消息队列
- 用no4j访问nosql数据库
- springboot验证web表单
- Spring Boot Actuator构j建服务
- 使用jms传递消息
- springboot创建批处理服务
- spring security保护web 安全
- 在Pivotal GemFire中访问数据
- 使用Spring Integration
- 使用springboot jpa进行数据库操作
- 数据库事务操作
- 操作mongodb
- springmvc+tymleaf创建web应用
- 将Spring Boot JAR应用程序转换为WAR
- 创建异步服务
- spring提交表单
- 使用WebSocket构建交互式Web应用程序
- 使用REST访问Neo4j数据
- jquery消费restful
- springboot跨域请求
- 消费SOAP Web服务
- springboot使用缓存
- 使用Vaadin创建CRUD UI
- 使用REST访问JPA数据
- 使用REST访问Pivotal GemFire中的数据
- 构建soap服务
- 使用rest访问mongodb数据
- 构建springboot应用docker镜像
- 从STS部署到Cloud Foundry
- springboot测试web应用
- springboot访问mysql
- springboot编写自定义模块并使用
- 使用Google Cloud Pub / Sub进行消息传递
- 构建反应式RESTful Web服务
- 使用Redis主动访问数据
- Spring Boot 部署到Kubernetes
- 使用反应式协议R2DBC访问数据
- Spring Security架构
- spring构建Docker镜像详解
- Spring Boot和OAuth2
- springboot应用部署到k8s
- spring构建rest服务详解