springboot其實是spring家族的一個成員,當然繼承了所有spring和springMVC的注解,這裡一起做一個總結。
二、控制層注解:@Controller
1、@Controller:用于定義控制器類,在spring 項目中由控制器負責将使用者發來的URL請求轉發到對應的服務接口(service層),一般這個注解在類中,通常方法需要配合注解@RequestMapping
@Controller //加上此注解表示一個控制器,表示此類的作用為處理後端請求
@RequestMapping("/test") //一般和此注解一并使用,表示請求的字首
public class DemoController {
@RequestMapping("/demoInfo")
public void test(){//此方法可以看做一個後端請求通過項目+/demoInfo/test來通路
System.out.println(1);
}
}
2、@RequestMapping("/demoInfo"):提供路由資訊,負責URL到Controller中的具體函數的映射,參數可以寫具體通路路徑,如上;
3、@RequestMapping(value="/demoInfo",method={RequestMethod.GET,RequestMethod.POST}),指定URL請求方法,預設為get和post都可以請求,指定後隻能使用該種請求方式;
4、@RequestParam(value="demoInfo",required=false):使用在具體參數前,擷取傳入的參數,參數名為value,與request.getParameter("xx")相比,此注解參數預設必傳,如果類型不正确,會報出 類型無法轉換異常,當然也可以設定參數不必傳;
5、@PathVariable和上面@RequestParam一樣用來修飾參數,此注解的意思是:使用URL中的用大括号包含的同名變量作為參數傳入;
@Controller //加上此注解表示一個控制器,表示此類的作用為處理後端請求
@RequestMapping("/test") //一般和此注解一并使用,表示請求的字首
public class DemoController {
@RequestMapping("/demoInfo/{id}")
public void test(@PathVariable("id") int id){
System.out.println(1);
}
}
6、@ResponseBody:使用在每個@RequestMapping頭,表示該方法的傳回結果直接寫入HTTP response body中,
一般在異步擷取資料時使用,用于建構RESTful的api。 在使用@RequestMapping後,傳回值通常解析為跳轉路徑,加上@Responsebody後傳回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。 比如異步擷取json資料,加上@Responsebody後,其内部會有一個轉化器,将傳回的資料轉換成json格式,會直接傳回json資料。 該注解一般會配合@RequestMapping一起使用;
@Controller
@RequestMapping("/test")
public class DemoController {
@RequestMapping("/demoInfo")
@ResponseBody
public void test(){
}
}
7、@RestController:功能和上面的Controller類似,不過此注解還包含了另一個注解:@ResponseBody,等同于@[email protected],也就意味此注解将所有此類中所有路由映射都加上@ResponseBody
@RestController
@RequestMapping("/test")
public class DemoController {
}