在Spring MVC中,@RestController注解和@Controller注解是两个常用的控制器注解,都可以用于处理HTTP请求。
@Controller注解主要用于传统的Web应用,用来声明一个类为控制器类,并且可以在该类的方法上使用其他注解(比如@RequestMapping)来处理HTTP请求。这种情况下,控制器方法需要返回一个modelAndView对象(视图名称和模型数据),也可以使用response对象来渲染响应结果。
而@RestController注解则主要用于RESTful风格的Web服务,在控制器类上标注@RestController注解之后,请求映射方法就不会返回视图,而是默认使用Spring的消息转换机制输出JSON或XML等格式的数据。因此,我们通常在提供RESTful风格的API时使用@RestController注解。
此外,@RestController注解相当于@Controller和@ResponseBody注解的组合,它将控制器类和响应体结合在了一起,使得编写RESTful API更加方便简洁。
总之,@Controller注解适用于传统的Web应用,用于处理HTTP请求并返回视图,而@RestController注解则适用于RESTful API,用于处理HTTP请求并返回数据。