spring @Controller和@RestController注释之间的区别。

@Controller注释可以同时用于Web MVC和REST应用程序吗? 如果是,我们如何区分它是Web MVC还是REST应用程序?


当前回答

@Controller:这个注释只是@Component的一个特殊版本,它允许基于类路径扫描自动检测控制器类。 @RestController:这个注释是@Controller的一个特殊版本,它自动添加@Controller和@ResponseBody注释,这样我们就不必把@ResponseBody添加到映射方法中了。

其他回答

@Controller:这个注释只是@Component的一个特殊版本,它允许基于类路径扫描自动检测控制器类。 @RestController:这个注释是@Controller的一个特殊版本,它自动添加@Controller和@ResponseBody注释,这样我们就不必把@ResponseBody添加到映射方法中了。

@RestController注释类与@Controller相同,但处理器方法上的@ResponseBody是隐含的。

而不是使用@Controller和@ResponseBody, @RestController让你在Spring 4.0和更高版本中公开Rest api。

@Controller用于将类标记为Spring MVC Controller。 @RestController是一个方便的注释,它只添加了@Controller和@ResponseBody注释(参见:Javadoc)。

所以下面两个控制器定义应该做同样的事情

@Controller
@ResponseBody
public class MyController { }

@RestController
public class MyRestController { }

@RestController是@Controller和@ResponseBody的组合。

@Controller类中的请求流,不使用@ResponseBody注释:

@RestController返回一个对象作为响应而不是视图。