⼩⽩⾯试题:@Controller和@RestController的区别
这两个注解都是⽤于SpringMVC框架,
早期使⽤JSP做页⾯展⽰时,习惯使⽤Controller注解,它返回的是SpringMVC框架提供的ModelAndView对象(简称Model对象)
⽽当今主流习惯的时控制层返回JSON,前台页⾯通过ajax提交Controller请求,然后获得JSON字符串响应,然后解析JSON,从中获取数据后在页⾯上展现。
显然这种⽅式优于早期只为JSP服务的⽅式,不仅兼容就的JSP⽅式,⽀持新的ajax⽅式,甚⾄能异构系统,前台是nodejs下的
vue+elementui等。
说了半天怎么跟题⽬好像⽆关呢?别着急说清了背景,区别就出来了。
@Controller 适合早期JSP⽅式,它直接返回ModelAndView对象。
@RestController 适合现今⼤前端⽅式,如VUE,它返回JSON,vue对json解析,渲染到页⾯上。
*** @since 2.5**
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Controller {vuejson转对象
*** @since 4.0**
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
为了兼容以前⽅式,RestController其实就是Controller,只是在Controller返回对象前,它⼲了件事情,通过注解标识
@ResponseBody把返回的对象Object,转换成了JSON字符串。
这⾥注意@Controller返回也是java对象,但它本质是SpringMVC框架的ModelAndView对象;
⽽@RestController返回则是业务对象,或者统⼀的返回值对象 SysResult。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论