不學無數——SpringBoot入門Ⅰ
SpringBoot
1.SpringBoot簡介
在剛接觸SSM框架的時候,想必都會被這個框架的配置檔案所煩擾,需要自己手動配置的東西非常多,哪怕有些東西自己不需要也是需要配置的。而SpringBoot此時就應運而生,減少了大家的配置過程。相信都聽過“約定優於配置”的這樣一句話,就是說系統,類庫,框架應該假定合理的預設值,而非要求提供不必要的配置,可是使用Spring或者SpringMVC的話依然有許多這樣的東西需要我們進行配置,這樣不僅徒增工作量而且在跨平臺部署時容易出問題。 簡單來說,就是使用SpringBoot可以是我們能夠快速的構建一個能用執行的Spring專案。
1.1 SpringBoot優點
- 能夠快速構建一個能夠獨立執行的Spring專案
- 內嵌有Tomcat容器,無需配置Tomcat
- 提供了許多starter,簡化了許多的配置
- 無程式碼生成,沒有xml的配置
2.第一個SpringBoot專案啟動
2.1 專案搭建
介紹完Springboot以後,讓我們開始搭建一個簡單的“Hello World!”的SpringBoot專案。千里之行始於足下,相信第一個java專案也是從“hello,world!”開始的。不要小瞧了這第一步,有多少人是在第一步遭受到了挫折從而放棄了。但是SpringBoot給提供的第一步啟動實在是簡單,和它的宗旨也正相符合。快速而簡便的構建專案。
<center><img src="http://p9jfgo4wc.bkt.clouddn.com/1531313795236.jpg" width="60%" height="60%"/></center>
可以清楚的看到SpringBoot的生成檔案結構,其中FirstSpringBootApplication是和你的專案名是一致的,它相當於程式的入口處,而resource資料夾下的application檔案是配置檔案,例如想要配置啟動的tomcat埠號都可以在此配置。build.gralde是由於我選擇的是gradle所以生成的這個檔案,此檔案是可以將想要引用的jar包寫在裡面。gradle會自動的從網上或者本地下載相應的jar包。
2.2 專案啟動
在專案的啟動檔案中加入這行程式碼,當然也可以自己建一個java檔案。但是要加上@RestController註解。此時若是
@RequestMapping("/")
String home() {
return "Hello";
}
為什麼是@RestController而不是@Controller呢,此時我們可以點選進@RestController中可以看到它是由@Controller和@ResponseBody組成的註解。其中加不加@ResponseBody是有區別的,如果加上的話那麼就會將你的返回值作為資料返回,如果不加的話那麼就會當做頁面的名稱。舉個例子像上面的程式碼如果有@ResponseBody的話那麼就會返回給頁面Hello字串,如果是沒有的話就會跳轉到Hello.html或者Hello.jsp頁面,具體是jsp還是html頁面,這得看SpringMvc的配置了,這裡就不詳細解釋。然後直接執行FirstSpringBootApplication.java裡面main方法即可啟動。打開了啟動檔案你會發現上面帶了一個@SpringBootApplocation註解。這個註解接下來我們再解釋。然後在頁面輸入localhost:8080即可看見Hello。
2.3專案結構
通常來說,SpringBoot的啟動類建議放在程式碼的根目錄下的。因為@EnableAutoConfiguration這個註解是基於你的啟動類來掃描的,意思就是掃描啟動類所在的資料夾以及以下的所有檔案。
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
[email protected]註解詳解
進入到@SpringBootApplocation這個註解當中時,可以發現裡面還有其他的註解
<center><img src="http://p9jfgo4wc.bkt.clouddn.com/7A5DFBDF-46A1-4C30-ABA5-DCA3F10A9B1D.png"/></center> 其中最重要的是@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan這三個註解。
[email protected]
這是一個類級別的註解,這個註解的作用是猜,為什麼是猜呢。因為他會基於你的jar包依賴而猜測將會怎樣的配置。例如spring-boot-starter-web你添加了這個jar包以後其中包含著Tomcat和SpringMVC,這個註解會猜測這個專案會是一個web專案,所以他就會自動的配置了Spring。
當然你要可以自己定製自己需要的配置,例如如果你想新增自己的資料來源DateSource的話,那麼自己寫一個類,上面加上@Configure的註解,那麼在專案啟動的時候就會優先使用自己寫的配置。如果想知道專案中有哪些是自動配置了,那麼啟動專案的時候用--debug啟動那麼在控制檯中的日誌中就會有顯示。
3.2 @ComponentScan
在Sping中你可以使用註解進行注入Bean,例如@[email protected]等等,這些都是自動注入的。但是得設定掃描的包路徑,直接@ComponentScan("org.example.web")這樣既可,就是掃描org.example.web下的包。這個註解和xml中對應的配置是
<context:component-scan base-package="org.example.web"/>
[email protected]
加上此註解的就表明了一個類提供SpringBoot應用。在之前的Spring的Test模組中,如果想要進行模組化的測試的話,或許會去尋找@ContextConfiguration進行載入一些資原始檔,另外也可能需要寫針對於Test模組的@Configuration,但是在SpringBoot中不用如此,因為他會有一個演算法,會在模組化測試的時候回自動的尋找@SpringBootConfiguration註解。這樣就不需要單獨的配置測試模組的配置檔案了,但是如果想定製化測試模組的配置檔案話也可以,只要加上@TestConfiguration即可。
3.4其他註解
[email protected]
SpringBoot是不推薦使用xml的配置檔案,他所想要的結果是所有的配置都是java類上面加上@Configuration配置。但是有的專案確實得需要xml配置檔案,這時候就可以使用@ImportResource註解