SpringBoot
1. 快速入門
什么是Spring
- 輕量級(jí)的Java開源開發(fā)框架
- 為了解決企業(yè)級(jí)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的屎勘,簡(jiǎn)化開發(fā)
Spring是如何簡(jiǎn)化Java開發(fā)的
? 為了降低Java開發(fā)的復(fù)雜性,Spring采用4種關(guān)鍵策略:
- 基于POJO的輕量級(jí)和最小侵入性編程;
- 通過IOC,依賴注入(DI)和面向接口實(shí)現(xiàn)松耦合;
- 基于切面(AOP)和慣例進(jìn)行聲明式編程;
- 通過切面和模板減少樣式代碼洲敢;
什么是SpringBoot
? SpringBoot就是一個(gè)JavaWeb的開發(fā)框架,和SpringMVC類似茄蚯,對(duì)比其他框架的好處是簡(jiǎn)化開發(fā)压彭,約定大于配置,能迅速的開發(fā)web應(yīng)用第队,幾行代碼就可以開發(fā)一個(gè)http接口哮塞。
? 所有的技術(shù)框架的發(fā)展都遵循一條主線:一個(gè)復(fù)雜應(yīng)用場(chǎng)景->一種規(guī)范框架(只需配置)->重構(gòu)輕量級(jí)框架->開始提倡"約定大于配置",衍生出一些一站式的解決方案凳谦。
? 這就是:Java企業(yè)級(jí)應(yīng)用->J2EE->spring->springBoot的過程。
? 隨著Spring不斷發(fā)展衡未,項(xiàng)目整合開發(fā)需要配置各種文件尸执,逐漸向“配置地獄”演變。SpringBoot就是在這個(gè)背景下被抽象出來的開發(fā)框架缓醋,目的就是為了更容易的使用Spring如失、更容易的集成各種常用的中間件、開源軟件送粱。
? SpringBoot基于Spring開發(fā)褪贵,本身不提供擴(kuò)展功能,只是用于快速開發(fā)新一代基于Spring框架的應(yīng)用程序抗俄。開箱即用脆丁!
SpringBoot的主要優(yōu)點(diǎn):
- 為所有Spring開發(fā)者更快的入門
- 開箱即用,提供各種默認(rèn)配置來簡(jiǎn)化項(xiàng)目配置
- 內(nèi)嵌式容器簡(jiǎn)化Web項(xiàng)目
- 沒有冗余代碼生成和XML配置的要求
1.1 微服務(wù)
什么是微服務(wù)动雹?
? 微服務(wù)是一種架構(gòu)風(fēng)格槽卫,它要求我們?cè)陂_發(fā)一個(gè)應(yīng)用的時(shí)候,這個(gè)應(yīng)用構(gòu)建成一系列小服務(wù)的組合胰蝠;可以通過http的方式互通歼培。過去是 單體應(yīng)用架構(gòu)震蒋。
單體應(yīng)用架構(gòu)
? 單體應(yīng)用架構(gòu)(all in one)是指,所有應(yīng)用服務(wù)都封裝在一個(gè)應(yīng)用中躲庄。
? 無論是ERP查剖、CRM,你都把數(shù)據(jù)庫(kù)訪問噪窘,web訪問等功能放在一個(gè)war包內(nèi)笋庄。
- 這樣的好處是,易于開發(fā)和測(cè)試效览;需要擴(kuò)展時(shí)无切,只需要將war復(fù)制多份,放到多個(gè)服務(wù)器上丐枉,再做個(gè)負(fù)載均衡就可以了哆键。
- 缺點(diǎn)是,哪怕修改一個(gè)小地方瘦锹,都需要停掉整個(gè)服務(wù)籍嘹,重新打包、部署war包弯院。
微服務(wù)架構(gòu)
? 所謂微服務(wù)架構(gòu)辱士,就是把每個(gè)功能元素獨(dú)立出來。把獨(dú)立出來的功能元素動(dòng)態(tài)組合听绳,即對(duì)功能元素進(jìn)行復(fù)制颂碘,而沒有對(duì)整個(gè)應(yīng)用進(jìn)行復(fù)制。
? 好處有:
- 節(jié)約了調(diào)用資源
- 每個(gè)功能元素的服務(wù)都是一個(gè)可替換的椅挣、可獨(dú)立升級(jí)的軟件代碼
如何構(gòu)建微服務(wù)
? spring為我們帶來了構(gòu)建大型分布式微服務(wù)的全套头岔、全程產(chǎn)品:
- 構(gòu)建一個(gè)個(gè)功能獨(dú)立的微服務(wù)應(yīng)用單元,可以使用
SpringBoot
鼠证,可以幫我們快速構(gòu)建一個(gè)應(yīng)用峡竣; - 大型分布式網(wǎng)絡(luò)服務(wù)的調(diào)用,這部分由
springcloud
來完成量九,實(shí)現(xiàn)分布式适掰; - 在分布式中間,進(jìn)行流式數(shù)據(jù)計(jì)算荠列、批處理类浪,我們用
spring cloud data flow
; - spring為我們想清楚了整個(gè)從開始構(gòu)建應(yīng)用到大型分布式應(yīng)用全流程方案弯予;
1.2 HelloWorld
準(zhǔn)備工作:
環(huán)境準(zhǔn)備:
- jdk1.8
- maven-3.6.1
- springboot 最新版(2.3.2)
- IDEA
創(chuàng)建基礎(chǔ)項(xiàng)目
官方提供了一個(gè)快速生成的網(wǎng)站:Spring InitializrF莼隆(IDEA集成了這個(gè)網(wǎng)站)
- 可以在官網(wǎng)直接下載后,導(dǎo)入idea開發(fā)(官網(wǎng)在哪)
- 直接使用idea創(chuàng)建一個(gè)springboot項(xiàng)目(開發(fā)常用方式)
【目標(biāo)一:使用Spring Initializr頁(yè)面創(chuàng)建項(xiàng)目】
步驟:
-
填寫項(xiàng)目信息
點(diǎn)擊“Generate Project”生成項(xiàng)目锈嫩,下載此項(xiàng)目
解壓項(xiàng)目包受楼,并以Maven項(xiàng)目導(dǎo)入IDEA
第一次打開垦搬,速度會(huì)比較慢,需要下載的依賴很多
項(xiàng)目結(jié)構(gòu)分析
? 通過上面步驟完成了基礎(chǔ)項(xiàng)目的創(chuàng)建艳汽,就會(huì)自動(dòng)生成以下文件:
- 程序的主程序類
- 一個(gè)application.properties配置文件
- 一個(gè)測(cè)試類
pom.xml分析
? 打開pom.xml猴贰,查看Spring Boot項(xiàng)目的依賴,主要有四個(gè)部分:
- 項(xiàng)目元數(shù)據(jù)信息:包括groupId河狐、artifactId米绕、name、description馋艺;
- parent:繼承
spring-boot-starter-parent
的依賴管理栅干,控制版本和打包等內(nèi)容; - dependencies:項(xiàng)目依賴捐祠,包含以下內(nèi)容
-
spring-boot-starter-web
:實(shí)現(xiàn)HTTP接口(包含SPringMVC)碱鳞,官網(wǎng)對(duì)它的描述:使用SpringMVC構(gòu)建Web應(yīng)用程序的入門者,使用Tomcat作為默認(rèn)嵌入式容器 -
spring-boot-starter-test
:用于編寫單元測(cè)試的依賴包
-
- build:構(gòu)建配置部分踱蛀。默認(rèn)使用了
spring-boot-maven-plugin
窿给,配合spring-boot-starter-parent
就可以把SpringBoot應(yīng)用打包成JAR來直接運(yùn)行。
編寫HTTP接口
-
在主程序的同級(jí)目錄下率拒,新建一個(gè)controller包
[圖片上傳失敗...(image-d8d839-1600418970462)]
-
在包中新建一個(gè)Controller類
//核心:自動(dòng)裝配 原理1琅荨!猬膨! @RestController public class HelloController { //接口:http://localhost:8080/hello @RequestMapping("/hello") public String hello() { //調(diào)用業(yè)務(wù)角撞,接收前端的參數(shù) return "hello,world"; } }
-
編寫完畢后,在主程序中啟動(dòng)項(xiàng)目勃痴,瀏覽器發(fā)起請(qǐng)求靴寂,看界面返回;
- 控制臺(tái)輸出了SpringBoot的banner
- 控制條輸出了Tomcat訪問的端口號(hào)
- 訪問hello請(qǐng)求召耘,字符串成功返回!
-
配置pom.xml褐隆,將項(xiàng)目打成jar包
<distributionManagement> <repository> <id>proficio-repository</id> <name>Proficio Repository</name> <url>file://${basedir}/target/deploy</url> </repository> </distributionManagement>
- 打成jar包后污它,就可以在任何地方運(yùn)行了!
小結(jié)
? 簡(jiǎn)單幾步庶弃,就完成了一個(gè)web接口的開發(fā)衫贬,SpringBoot就是這么簡(jiǎn)單,所以我們常用它來建立微服務(wù)項(xiàng)目歇攻!
彩蛋
自定義啟動(dòng)banner圖案(賊酷)
在resources下新建banner.txt
即可固惯,效果如下: