RestController 和Controller的區別
阿新 • • 發佈:2019-02-11
在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
RestController
修飾類,最後返回結果都會被解析成json字串,適合所有的方法返回值都是json資料