天天看點

springboot從零開始: @RestController和@Controller 差別

前言:

本系列部落格記錄 springboot 求學之路:

springboot 有很多請求方式,這裡記錄一下如題的一個疑問,

1.問題的由來

學習就要看書,書上有個例子,如下:

@Controller
public class TestController {

    @GetMapping("/get")
    public @ResponseBody Object getName() {
        return "hello";
    }
}
           

而網上的教程是這樣的:

@RestController
public class TestController {

    @GetMapping("/get")
    public Object getName() {
        return "hello";
    }
}
           

這兩個例子都沒問題,但是寫法風格不一樣,是以有必要探究一下

2.差別

@RestController加在類上面的注解,使得類裡面的每個方法都将 json/xml 傳回資料加傳回到前台頁面中

@Controller加在類上面的注解,使得類裡面的每個方法都傳回一個視圖頁面;

仔細看“視圖頁面”,1 中給的例子傳回的可是字元串,很明顯不符合,為了可以傳回字元串,是以在類方法裡面多了一個@ResponseBody注解,它讓方法可以以 json/xml 形式傳回。

3.總結

@RestController 傳回json/xml

@Controller 傳回視圖

如果需求是傳回 json/xml 則 @RestController = @Controller + @ResponseBody

其中 @ResponseBody注解可以放到類上(類中方法都生效),也可以放在方法上,如下

@Controller
public class TestController {

    @GetMapping("/get")
    @ResponseBody 
    public Object getName() {
        return "hello";
    }
}
           

繼續閱讀