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,如下圖所示(部分截圖):

狹義上則為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構建的:

如下圖所示,是spring主頁介紹Spring Cloud的配圖,我們可以看到,分布式微服務每一個環節,Spring Cloud都提供了對應的組件支持:

- 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服務詳解