@Controller | 處理http請求 |
@RestController | Spring4以後新加的註解,原來返回json須要前端 @ResponseBody配合@Controllerjava |
@RequestMapping | 配合url映射 |
1.1. 該註解須要配合模板(瞭解便可)來使用。以下代碼,這裏添加springboot官方推薦的thymeleaf模板:spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
可是,如今的開發方式基本是先後端分離的,Java後端只須要提供一些REST接口,返回一些json格式數據給前端便可,不用再去使用模板的方式,使用模板會給性能上帶來很大的損耗,因此不推薦使用模板。json
1.2. 能夠將 @RequestMapping 註解的 value 屬性值寫成一個集合,便可響應多種請求:後端
@RestController public class HelloController { @RequestMapping(value = {"/hello","/hi"}, method = RequestMethod.GET) public String say() { return "Hello Spring Boot!"; } }
上面的 say 方法能夠響應 localhost:8080/hello,以及localhost:8080/hi安全
1.3. method屬性能夠不寫,這樣就既可響應GET請求,也可響應POST請求,可是不一樣請求是適應不一樣的業務場景的,爲了安全起見,推薦加上這個屬性值。springboot
@PathVariable | 獲取url中的數據 |
@RequestParam | 獲取請求參數的值 |
@GetMapping | 組合註解 |
該註解的相關知識和springmvc中差很少,具體能夠參見:mvc
https://my.oschina.net/u/3381212/blog/1492116,這裏再作一遍解釋:app
@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/say/{id}", method = RequestMethod.GET) public String say(@PathVariable("id") Integer id) { return "id:"+id; } }
如上面代碼所示,@RequestMapping 的 value 屬性值爲 「/say/{id}」,並在say方法的參數中使用了@PathVariable註解,這樣就能夠得到請求URL中的佔位符參數值,如圖:前後端分離
傳統URL中傳遞參數通常形式爲:http://localhost:8080/hello/say/?id=123,此時可使用@RequestParam 註解來獲取傳遞參數的值
@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/say", method = RequestMethod.GET) public String say(@RequestParam("id") Integer myId) { return "id:"+myId; } }
如上代碼所示,運行結果以下:
注意,此時若是不傳id的值會報錯,能夠在@RequestParam註解中增長几個屬性值,寫成以下形式:
@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/say", method = RequestMethod.GET) public String say(@RequestParam(value = "id",required = false,defaultValue = "0") Integer myId) { return "id:"+myId; } }
設置了requird屬性,標明id值是否必需要傳(不寫默認爲true),設置defaultValue,標明默認值爲「0」(String類型)
@RequestParam註解的相關知識和springmvc中差很少,具體能夠參見:http://www.javashuo.com/article/p-ayiiocux-md.html
該註解是一個組合註解,在以下場景中使用會比較簡潔:
@RequestMapping(value = "/say", method = RequestMethod.GET),嫌這麼寫太長,麻煩?
那就換成這種寫法:@GetMapping(value = "/say"),效果是同樣的。
同理,還有@PostMapping,@PutMapping等等組合註解,簡化書寫,節省時間