1. 程式人生 > >RestController 和Controller的區別

RestController 和Controller的區別

在SpringMVC中,經常會使用註解 的方式來定義一個控制器。
最常用的有控制器註解@Controller,可以在控制器類中寫各種業務方法,然後返回資料,一般資料的返回分成兩大種

頁面

返回靜態頁面

ModelAndView

返回頁面和相應資料

json字串

那麼我們通常會使用@Controller@ResponseBody來修飾某個具體的方法,當然@ResponseBody還可以修飾類。如果某個類設計初衷就是返回json字串,那麼該類就可以使用@Controller + @ResponseBody,還可以使@RestCotroller簡化書寫

@Target({ElementType.TYPE})
@Retention
(RetentionPolicy.RUNTIME) @Documented @Controller //控制器註解 @ResponseBody //返回資料會被解析成json字串 public @interface RestController { @AliasFor( annotation = Controller.class ) String value() default ""; }

從上面的原始碼中可以清晰的看到@RestController = @Controller + @ResponseBody

如何抉擇

使用@Controller

修飾類,可以根據需要返回各種我們所需的資料(json,ModelAndView,靜態頁面),而使用RestController修飾類,最後返回結果都會被解析成json字串,適合所有的方法返回值都是json資料