1前言
??作為程序員,每入門一門技術(shù),都是從hello world開始.接下來望浩,就寫個簡單的helloword spring boot項目..
1環(huán)境準備
以下環(huán)境是本人的開發(fā)環(huán)境:
(1)JDK1.8_131
(2)Maven 3.3.9
(3)IDEA 2017.1.3
(4)git 2.7.4
2 小試牛刀之Hello World
工程項目的github傳送門:(https://github.com/simos-code/springboot-quick-start.git).啟動后,在瀏覽器輸入:
http://localhost:8080/hello,瀏覽器上就出現(xiàn):"hello world".如下圖所示:
通過這個簡單的項目我們可以看到spring boot在大大降低了我們使用spring框架的難度,復雜度.只需要簡單的幾行代碼包各,就可以構(gòu)建一個spring應(yīng)用.沒有任何額外的配置文件.
3庖丁解牛Hello World
下圖是我們hello world項目的目錄結(jié)構(gòu)圖,麻雀雖小靶庙,五臟俱全.通過分析這個最簡單的demo问畅,我們可以看到spring boot在spring框架的基礎(chǔ)上提供了什么.然后對spring boot原理有個大致的概念,否則很多時候六荒,自己的項目構(gòu)建起來后护姆,業(yè)務(wù)功能也實現(xiàn)了,框架怎么運行沒有了解掏击,真正需要自己去實現(xiàn)一些框架本身沒有提供的功能卵皂,百度找不到相關(guān)例子的時候,就一籌莫展.掌握基本原理砚亭,就可以依樣畫瓢灯变,實現(xiàn)自己想要的功能.
3.1maven引入依賴
通過下圖來說明在spring boot中如何按需引入各個功能的"starter".
從maven的配置中可以看到殴玛,POM文件中有個parent節(jié)點.parent節(jié)點主要包含兩三個信息:groudId(可以被繼承),artifactId(私有),version(可以被繼承).就像我們java的繼承里一樣,parent節(jié)點作為其他"starter"節(jié)點的父節(jié)點添祸,"starter"子節(jié)點繼承parent后也會包含parent節(jié)點的version屬性(ps:生產(chǎn)環(huán)境使用release版本滚粟,這是穩(wěn)定版),這樣整個工程里所有g(shù)roupId為"org.springframework.boot"的"starter"就有相同version.比如上圖中"spring-boot-starter-web"的依賴版本就是通過繼承parent得來的.總之一句話刃泌,可以通過parent節(jié)點統(tǒng)一管理springboot的版本凡壤,避免使用不同版本導致maven依賴沖突.這里的"可以",說明大家也可以直接在各個"starter"依賴里頭添加指定版本,沒有特殊的需求耙替,官方文檔也是推薦使用parent節(jié)點進行統(tǒng)一的版本管理.springboot官方提供的"starter"列表傳送門:starter官方文檔鏈接
3.2 HelloController
接下來我們看看web頁面的"hello world"怎么得到的.下圖是HelloController代碼:
使用過spring mvc的小伙伴都知道亚侠,controller是用來處理web請求的.這里用的注解是@RestController而不是@Controller.在springmvc中,單獨使用@Controller時返回的是web頁面俗扇,如果在請求處理方法(加這個注解的方法最終返回http(s) response不是頁面硝烂,而是string數(shù)據(jù))或者controller類(類里面的所有web請求處理方法返回的都是string數(shù)據(jù)而不是頁面)上添加@ResponseBody則是聲明返回給請求的是數(shù)據(jù)而不是頁面.從注解的名字我們就可以知道這個@RestController用來實現(xiàn)restful請求用的,直接給http(s)請求返回string類型的數(shù)據(jù).下面是@RestController的源碼截圖:
從@RestController注解源碼可以看出铜幽,它其實就是組合了注解@Controller和@ResponseBody滞谢,簡化了restful的實現(xiàn).@RestController中的request處理方法的返回值我會用這個demo的另一個git分支去講解一下.
3.3QuickStartApplication
接下來我們講一下springboot的啟動入口,先貼斷代碼截圖:
然
從圖上看啥酱,很簡單有木有爹凹!幾行代碼一個spring boot應(yīng)用就啟動了,沒有任何配置文件.看到main函數(shù)入口是不是很熟悉啊镶殷,就是一個普通的java工程項目禾酱,main方法里頭只有一個SpringApplication靜態(tài)方法run調(diào)用.唯一不同的多了個spring boot 的注解@SpringBootApplication,這個注解也是用一篇獨立的博客跟大家說說這個注解背后的原理绘趋,講講run方法.因為篇幅太長颤陶,閱讀起來不太舒服.
4小結(jié)
以上主要配置了一個最最簡單的springboot應(yīng)用,沒有任何配置文件陷遮,沒有多余的注解.后續(xù)文章滓走,會基于這個demo慢慢分析springboot基本原理.讓大家知其然,也知所以然.