以前幾個章節,大部分都是算介紹springboot的一些外圍配置,好比日誌 配置等。這章節開始,開始總結一些關於
springboot
的綜合開發的知識點。因爲SpringBoot
自己是基於Spring
和SpringMvc
等各種spring
家族的一個解決方案,可快速進行集合。故相關知識點其實大部分都是基於spring
或者springmvc
既有的知識點的。本章節,主要講解的是關於web開發
及springboot
獨有的一些經常使用註解進行說明。html
前幾章,在系統啓動類裏面,都加入了此啓動註解,此註解是個組合註解,包括了
@SpringBootConfiguration
、@EnableAutoConfiguration
和@ComponentScan
註解。前端
@SpringBootConfiguration 繼承至@Configuration
,對於熟悉spring
的開發者而言,此標註當前類是配置類,並會將當前類內聲明的一個或多個以@Bean註解標記的方法的實例歸入到srping容器中,而且實例名就是方法名。web
@EnableAutoConfiguration 這個註解就是springboot
能自動進行配置的魔法所在了。主要是經過此註解,能全部符合自動配置條件的bean的定義加載到spring
容器中,好比根據spring-boot-starter-web
,來判斷你的項目是否須要添加了webmvc
和tomcat
,就會自動的幫你配置web項目中所須要的默認配置。具體的使用,會在後期自定義實現一個自動啓動類時,會講解到它的一些機制。此章節就不深刻了,只須要它是這個用途便可,通常上也單獨使用不要這個註解,但好比須要排除一些無需自動配置的類時,可利用exclude
進行排除。redis
@ComponentScan 這個熟悉spring
的開發者也應該熟悉,會掃描當前包及其子包下被@Component,@Controller,@Service,@Repository等註解標記的類並歸入到spring容器中進行管理。spring
@RestController 是Spring4以後加入的註解,原來在@Controller中返回json須要@ResponseBody來配合,若是直接用@RestController替代@Controller就不須要再配置@ResponseBody,默認返回json格式。而@Controller是用來建立處理http請求的對象,通常結合
@RequestMapping
使用。json
一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。後端
經常使用屬性(摘抄至網絡):tomcat
經常使用的基本上就value
和method
了。 其簡化註解有springboot
@GetMapping 等同於 @RequestMapping(method = RequestMethod.GET) @PostMapping 等同於 @RequestMapping(method = RequestMethod.POST) @PutMapping 等同於 @RequestMapping(method = RequestMethod.PUT) @DeleteMapping 等同於 @RequestMapping(method = RequestMethod.DELETE) @PatchMapping 等同於 @RequestMapping(method = RequestMethod.PATCH)微信
@RequestBody註解容許request的參數在reqeust體中,經常結合前端POST請求,進行先後端交互。
@ResponseBody註解支持將的參數在reqeust體中,一般返回json格式給前端。
這三者都是申明一個單例的bean類並歸入spring容器中,後二者其實都是繼承於
@Component
。
@Component 最普通的組件,能夠被注入到spring容器進行管理
@Repository 做用於持久層
@Service 做用於業務邏輯層
一般一些類沒法肯定是使用@Service仍是@Component時,註解使用@Component
,好比redis
的配置類等
主要是綁定請求參數到指定對象上。此註解可被用於方法、參數上。
因爲如今都採用先後端分離
開發,故此註解相對用的較少了,但對於一些在每次請求前須要進行一些額外操做時。使用此註解依然是個選擇,好比進行統一的業務校驗等,但使用此註解實現相似功能時須要注意,使用異步調用時,好比callable
或者DeferredResult
時,被此註解的方法會執行兩次
,由於異步請求時,是掛起另外一個線程去從新執行,對於配置了攔截器而已,它們的執行順序爲
preHandle ---->afterConcurrentHandlingStarted ----> Controller---->preHandler----> postHandler ----> afterCompletion
攔截器的相關知識點會在下章進行說明,這裏只是特殊說明下。解決方案的話可簡單根據DispatcherType類型進行判斷,異步時對應類型爲:ASYNC,第一次請求正常爲:REQUEST。
本章節主要是闡述了在
web
開發時一些經常使用的註解,但好比一些像@autowired
、@resource
、@Qualifier
等在此就不列舉了,這些都比較簡單。對於開發者而言這些基本上都瞭解。
目前互聯網上不少大佬都有
springboot
系列教程,若有雷同,請多多包涵了。本文是做者在電腦前一字一句敲的,每一步都是實踐的。若文中有所錯誤之處,還望提出,謝謝。
499452441
lqdevOps
本文地址:https://blog.lqdev.cn/2018/07/16/springboot/chapter-six/