我們今天開始對SpringBoot的學習,本篇主要是Spring Boot的入門部分。
1、SpringBoot簡介
引用SpringBoot在百度百科中的含義:
Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。
在學習之前我們可以先列出Spring Boot的優點,以供了解,其相關內容會在未來進行講解。
- 快速創建獨立運行的Spring項目以及與主流框架集成
- 使用嵌入式的Servlet容器,應用無需打成WAR包
- starters自動依賴與版本控制
- 大量的自動配置,簡化開發,也可修改默認值
- 無需配置XML,無代碼生成,開箱即用
- 準生產環境的運行時應用監控
- 與云計算的天然集成
2、微服務
了解微服務以前,我們可以相對的了解一下單體應用,什么是單體應用呢?
在單體應用的年代,一個軟件應用,往往會將應用所有功能都開發和打包在一起,如圖所示,這里將代碼打成war包放置在Tomcat服務器上。但是,當用戶訪問量變大導致一臺服務器無法支撐時怎么辦呢?于是出現了負載均衡,后來又把靜態文件分離出來形成了動靜分離。但是呢所謂治標不治本,無論是負載均衡也好,動靜分離也罷,都是改善和優化了部署環境,改變不了根本的缺點:
- 代碼臃腫,應用啟動時間長;(代碼超過1G的項目都有!)
- 回歸測試周期長,修復一個小小bug可能都需要對所有關鍵業務進行回歸測試;
- 應用容錯性差,某個小小功能的程序錯誤可能導致整個系統宕機;
- 伸縮困難,單體應用擴展性能時只能整個應用進行擴展,造成計算資源浪費;
- 開發協作困難,一個大型應用系統,可能幾十個甚至上百個開發人員,大家都在維護一套代碼的話,代碼merge復雜度急劇增加。
所以在這種情況下我們今天的主角——“微服務”就應運而生了,我們先來看一下典型的微服務架構:
根據上圖的內容即可以很容易理解微服務架構的大體流程,客戶端調用不同的服務時會先經過服務網關來進行調用,而對服務的修改與上傳又可以通過服務注冊中心和服務配置中心來完成。
3、SpringBoot———HelloWorld
3.1、設計目標
3.2、創建一個Maven工程,在Maven中導入依賴Jar包
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.12.RELEASE</version></dependency></dependencies>
3.3、編寫一個SpringBoot主程序、啟動應用
package com.lizhengi;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** springBootApplication:標注一個主程序類,表示這個是一個Springboot應用*/@SpringBootApplication
public class HelloWorldApplication {public static void main(String[] args) {//Spring應用啟動SpringApplication.run(HelloWorldApplication.class, args);}
}
3.4、編寫一個Controller
package com.lizhengi.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** RestController:是spring4里的注解,是@ResponseBody和@Controller的縮寫。*/@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "hello SpringBoot,this is my first Application";}
}
3.5、運行main方法、查看瀏覽器
到這里我們的第一個SpringBoot程序HelloWorld程序就完成了。
3.6、簡化部署
3.6.1、添加maven插件
<!-- 這個插件,可以將應用打包成一個可執行的jar包;--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
3.6.2、使用mvn package進行打包
3.6.3、進入打包好的jar包所在目錄找到jar包
3.6.4、使用 java -jar jar包名稱 運行