不久前在學(xué)習(xí)Spring Cloud的相關(guān)知識(shí)乒融,原本準(zhǔn)備基于Spring Cloud來(lái)搭建自己的網(wǎng)站的详民,但最近工作實(shí)在有點(diǎn)繁忙吁伺,看書(shū)斷斷續(xù)續(xù)的逞带,書(shū)包里的kindle強(qiáng)行撐了兩個(gè)多禮拜沒(méi)關(guān)機(jī)欺矫,現(xiàn)在對(duì)于之前看的東西已經(jīng)忘了不少,因此現(xiàn)在把做的筆記以及編寫(xiě)的demo都記錄下來(lái)展氓,以便分享給他人(其實(shí)我知道沒(méi)人看)以及自己后續(xù)翻看復(fù)習(xí)穆趴。
Spring簡(jiǎn)介
在說(shuō)Spring Boot之前大家應(yīng)該都聽(tīng)說(shuō)過(guò)Spring。
Spring框架是一個(gè)輕量級(jí)的企業(yè)級(jí)開(kāi)發(fā)的一站式解決方案遇汞。
所謂解決方案就是可以基于Spring解決JavaEE開(kāi)發(fā)的所有問(wèn)題未妹。Spring框架主要提供了IoC容器簿废、AOP、數(shù)據(jù)訪問(wèn)络它、Web開(kāi)發(fā)族檬、消息、測(cè)試等相關(guān)技術(shù)的支持化戳。
Spring使用簡(jiǎn)單的POJO(Plain Old Java Object)來(lái)進(jìn)行企業(yè)級(jí)開(kāi)發(fā)单料。每一個(gè)被Spring管理的Java對(duì)象都稱之為Bean;而Spring提供了一個(gè)IoC容器來(lái)初始化對(duì)象点楼,解決對(duì)象之間的依賴管理和對(duì)象的使用扫尖。
Spring目前提供了大量的基于Spring的項(xiàng)目,如我本文要講述的SpringBoot以及基于Spring Boot而產(chǎn)生的Spring Cloud:
- Spring Boot:使用默認(rèn)開(kāi)發(fā)配置來(lái)實(shí)現(xiàn)快速開(kāi)發(fā)掠廓;
- Spring Cloud:為分布式系統(tǒng)開(kāi)發(fā)提供工具集换怖;
Spring框架本身又四大原則:
- 使用POJO進(jìn)行輕量級(jí)和最小侵入式開(kāi)發(fā);
- 通過(guò)依賴注入和基于接口變成實(shí)現(xiàn)松耦合却盘;
- 通過(guò)AOP和默認(rèn)習(xí)慣進(jìn)行聲明式編程狰域;
- 使用AOP和模板(template)減少模式化代碼媳拴;
Spring所有功能的設(shè)計(jì)和實(shí)現(xiàn)都是基于此四大原則的黄橘。
Spring Boot概述
相對(duì)于我們傳統(tǒng)常用的SpringMVC的一大堆繁瑣的xml配置,Spring Boot的“習(xí)慣優(yōu)于配置”理念使得我們很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行的屈溉,準(zhǔn)生產(chǎn)級(jí)別的基于Spring框架項(xiàng)目塞关。其核心功能包括以下幾點(diǎn):
- 獨(dú)立運(yùn)行的Spring項(xiàng)目:可以通過(guò)jar包形式運(yùn)行,即java -jar xx.jar子巾;
- 內(nèi)嵌servlet容器帆赢,無(wú)需以war包形式部署項(xiàng)目;
- 提供starter簡(jiǎn)化Maven配置:Spring提供了一系列的starter pom簡(jiǎn)化maven的依賴加載线梗,后文創(chuàng)建Spring Boot項(xiàng)目會(huì)看出來(lái)椰于;
- 自動(dòng)配置Spring:Spring Boot會(huì)根據(jù)在類路徑中的jar包、類仪搔,為jar包中的類自動(dòng)配置Bean瘾婿,這樣會(huì)極大的減少我們使用的配置。
- 準(zhǔn)生產(chǎn)的應(yīng)用監(jiān)控烤咧;
- 無(wú)代碼生產(chǎn)和xml配置:Spring Boot的神奇不是借助代碼生成實(shí)現(xiàn)的偏陪,而是通過(guò)條件注解來(lái)實(shí)現(xiàn)。這是Spring4.x的新特性煮嫌,在這笛谦,Spring4.x提倡使用Java配置和注解配置組合,Spring Boot不需要任何xml配置額即可實(shí)現(xiàn)Spring所有配置昌阿。
Spring Boot快速搭建
本人使用的開(kāi)發(fā)工具是IDEA饥脑,創(chuàng)建Spring Boot項(xiàng)目也比較方便恳邀,也推薦大家使用此工具,顏值高好啰,開(kāi)發(fā)體驗(yàn)也很好轩娶。
1新建Spring Initializr項(xiàng)目
2.填寫(xiě)項(xiàng)目信息,選擇項(xiàng)目使用技術(shù)框往,我們這里選擇Web就可以了鳄抒,填好項(xiàng)目名稱,finish椰弊。
至此许溅,項(xiàng)目搭建結(jié)束,其項(xiàng)目依賴如圖:
同時(shí)我們可以看到秉版,在我們groupId+artifactId組合包名下有個(gè)入口類:
我們啟動(dòng)該類中的main方法贤重,這里即是啟動(dòng)本項(xiàng)目:
控制臺(tái)打印輸出啟動(dòng)成功,我們?yōu)榱四芸吹巾?yè)面效果清焕,給該類加上@RestController注解并蝗,并添加index方法:
再次啟動(dòng)項(xiàng)目,訪問(wèn)localhost:8080 如圖所示
通過(guò)查看源碼可以發(fā)現(xiàn)秸妥,我們這里的*Application的入口類上的注解@SpringBootApplication注解實(shí)際上是組合了@Configuration滚停、@EnableAutoConfiguration、@ComponentScan這幾個(gè)注解粥惧,若不適用@SpringBootApplication键畴,也可使用這三個(gè)注解代替。其中@EnableAutoConfiguration讓Spring Boot根據(jù)類路徑中的jar包依賴為當(dāng)前項(xiàng)目進(jìn)行自動(dòng)配置突雪。
Spring Boot會(huì)自動(dòng)掃描@SpringBootApplication所在類的同級(jí)包起惕,因此建議入口類防止在groupId+artifactId組合包名下。
這里也順便講個(gè)有意思的東西咏删,我們啟動(dòng)Spring Boot的時(shí)候是有個(gè)默認(rèn)啟動(dòng)圖案的惹想,其實(shí)這個(gè)是可以換的,我們?cè)趕rc/main/resources下新建一個(gè)banner.txt督函,然后去http://patorjk.com/software/taag 網(wǎng)站生成字符嘀粱,然后將字符復(fù)制到banner.txt中,我寫(xiě)的是LEAFW侨核,再次啟動(dòng)如圖:
以上草穆,即為Spring Boot學(xué)習(xí)第一章節(jié),也是最最最最為基礎(chǔ)的東西搓译,后續(xù)會(huì)更新進(jìn)一步的學(xué)習(xí)筆記悲柱。
本博客中所有相關(guān)代碼已上傳至本人GitHub的leafw-blog-demo項(xiàng)目下,如有需要可下載查看些己。本文對(duì)應(yīng)的為springboot_1目錄豌鸡。
本文參考書(shū)籍:博文視點(diǎn)-Spring Boot實(shí)戰(zhàn)