spring @Controller和@RestController注释之间的区别。
@Controller注释可以同时用于Web MVC和REST应用程序吗? 如果是,我们如何区分它是Web MVC还是REST应用程序?
spring @Controller和@RestController注释之间的区别。
@Controller注释可以同时用于Web MVC和REST应用程序吗? 如果是,我们如何区分它是Web MVC还是REST应用程序?
当前回答
@Controller注解指出类是一个像web控制器一样的“控制器”,而@RestController注解指出类是一个控制器,其中@RequestMapping方法默认假设@ResponseBody语义,即服务REST API
其他回答
而不是使用@Controller和@ResponseBody, @RestController让你在Spring 4.0和更高版本中公开Rest api。
@Controller在使用jsp的遗留系统中使用。它可以返回视图。 @RestController用于标记该控制器正在提供JSON响应类型的REST服务。所以它将@Controller和@ResponseBody注释包装在一起。
Spring4+中的新@RestController注释,它将类标记为控制器,其中每个方法返回一个域对象而不是视图。它是@Controller和@ResponseBody滚动在一起的简写。
在下面的代码中,我将向您展示两者的区别 @ controller之间
@Controller
public class RestClassName{
@RequestMapping(value={"/uri"})
@ResponseBody
public ObjectResponse functionRestName(){
//...
return instance;
}
}
和@RestController
@RestController
public class RestClassName{
@RequestMapping(value={"/uri"})
public ObjectResponse functionRestName(){
//...
return instance;
}
}
@ResponseBody默认是激活的。您不需要将它添加到函数签名之上。
如果你使用@RestController,你不能返回一个视图(通过在Spring/springboot中使用Viewresolver),并且在这种情况下不需要@ResponseBody。
如果你使用@Controller你可以在Spring web MVC中返回一个视图。