天天看點

第三章、spring與springboot注解(二)

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 { 
  
}
           

繼續閱讀