SpringBoot-01-快速入門
- 2020 年 9 月 18 日
- 筆記
- springboot
SpringBoot
1. 快速入門
什麼是Spring
- 輕量級的Java開源開發框架
- 為了解決企業級應用開發的複雜性而創建的,簡化開發
Spring是如何簡化Java開發的
為了降低Java開發的複雜性,Spring採用4種關鍵策略:
- 基於POJO的輕量級和最小侵入性編程;
- 通過IOC,依賴注入(DI)和面向介面實現松耦合;
- 基於切面(AOP)和慣例進行聲明式編程;
- 通過切面和模板減少樣式程式碼;
什麼是SpringBoot
SpringBoot就是一個JavaWeb的開發框架,和SpringMVC類似,對比其他框架的好處是簡化開發,約定大於配置,能迅速的開發web應用,幾行程式碼就可以開發一個http介面。
所有的技術框架的發展都遵循一條主線:一個複雜應用場景->一種規範框架(只需配置)->重構輕量級框架->開始提倡”約定大於配置”,衍生出一些一站式的解決方案。
這就是:Java企業級應用->J2EE->spring->springBoot的過程。
隨著Spring不斷發展,項目整合開發需要配置各種文件,逐漸向「配置地獄」演變。SpringBoot就是在這個背景下被抽象出來的開發框架,目的就是為了更容易的使用Spring、更容易的集成各種常用的中間件、開源軟體。
SpringBoot基於Spring開發,本身不提供擴展功能,只是用於快速開發新一代基於Spring框架的應用程式。開箱即用!
SpringBoot的主要優點:
- 為所有Spring開發者更快的入門
- 開箱即用,提供各種默認配置來簡化項目配置
- 內嵌式容器簡化Web項目
- 沒有冗餘程式碼生成和XML配置的要求
1.1 微服務
什麼是微服務?
微服務是一種架構風格,它要求我們在開發一個應用的時候,這個應用構建成一系列小服務的組合;可以通過http的方式互通。過去是 單體應用架構。
單體應用架構
單體應用架構(all in one)是指,所有應用服務都封裝在一個應用中。
無論是ERP、CRM,你都把資料庫訪問,web訪問等功能放在一個war包內。
- 這樣的好處是,易於開發和測試;需要擴展時,只需要將war複製多份,放到多個伺服器上,再做個負載均衡就可以了。
- 缺點是,哪怕修改一個小地方,都需要停掉整個服務,重新打包、部署war包。
微服務架構
所謂微服務架構,就是把每個功能元素獨立出來。把獨立出來的功能元素動態組合,即對功能元素進行複製,而沒有對整個應用進行複製。
好處有:
- 節約了調用資源
- 每個功能元素的服務都是一個可替換的、可獨立升級的軟體程式碼
如何構建微服務
spring為我們帶來了構建大型分散式微服務的全套、全程產品:
- 構建一個個功能獨立的微服務應用單元,可以使用
SpringBoot
,可以幫我們快速構建一個應用; - 大型分散式網路服務的調用,這部分由
springcloud
來完成,實現分散式; - 在分散式中間,進行流式數據計算、批處理,我們用
spring cloud data flow
; - spring為我們想清楚了整個從開始構建應用到大型分散式應用全流程方案;
1.2 HelloWorld
準備工作:
環境準備:
- jdk1.8
- maven-3.6.1
- springboot 最新版(2.3.2)
- IDEA
創建基礎項目
官方提供了一個快速生成的網站:Spring Initializr!(IDEA集成了這個網站)
- 可以在官網直接下載後,導入idea開發(官網在哪)
- 直接使用idea創建一個springboot項目(開發常用方式)
【目標一:使用Spring Initializr頁面創建項目】
步驟:
-
填寫項目資訊
-
點擊「Generate Project」生成項目,下載此項目
-
解壓項目包,並以Maven項目導入IDEA
-
第一次打開,速度會比較慢,需要下載的依賴很多
項目結構分析
通過上面步驟完成了基礎項目的創建,就會自動生成以下文件:
- 程式的主程式類
- 一個application.properties配置文件
- 一個測試類
pom.xml分析
打開pom.xml,查看Spring Boot項目的依賴,主要有四個部分:
- 項目元數據資訊:包括groupId、artifactId、name、description;
- parent:繼承
spring-boot-starter-parent
的依賴管理,控制版本和打包等內容; - dependencies:項目依賴,包含以下內容
spring-boot-starter-web
:實現HTTP介面(包含SPringMVC),官網對它的描述:使用SpringMVC構建Web應用程式的入門者,使用Tomcat作為默認嵌入式容器spring-boot-starter-test
:用於編寫單元測試的依賴包
- build:構建配置部分。默認使用了
spring-boot-maven-plugin
,配合spring-boot-starter-parent
就可以把SpringBoot應用打包成JAR來直接運行。
編寫HTTP介面
-
在主程式的同級目錄下,新建一個controller包
-
在包中新建一個Controller類
//核心:自動裝配 原理!!! @RestController public class HelloController { //介面://localhost:8080/hello @RequestMapping("/hello") public String hello() { //調用業務,接收前端的參數 return "hello,world"; } }
-
編寫完畢後,在主程式中啟動項目,瀏覽器發起請求,看介面返回;
- 控制台輸出了SpringBoot的banner
- 控制條輸出了Tomcat訪問的埠號
- 訪問hello請求,字元串成功返回!
-
配置pom.xml,將項目打成jar包
<distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>file://${basedir}/target/deploy</url> </repository> </distributionManagement>
-
打成jar包後,就可以在任何地方運行了!
小結
簡單幾步,就完成了一個web介面的開發,SpringBoot就是這麼簡單,所以我們常用它來建立微服務項目!
彩蛋
自定義啟動banner圖案(賊酷)
在resources下新建banner.txt
即可,效果如下: