Moh*_*rmi 5 java spring spring-mvc spring-data
我正在使用Spring版本4(spring数据),我想将Object作为JSON返回,我想知道即使没有使用xmlRootElement注释用户类,下面的代码也能正常工作:
@RequestMapping(value = "/resources/users", method = RequestMethod.GET)
public ResponseEntity<User> getUserByLogonId(OAuth2Authentication auth) {
String userLogonId = ((org.springframework.security.core.userdetails.User) auth.getUserAuthentication()
.getPrincipal()).getUsername();
UsersServices usersServices = new UsersServicesImpl(usersOperations);
User user = usersServices.findByLogonId(userLogonId);
HttpStatus userStatus = HttpStatus.NOT_FOUND;
if (user != null) {
userStatus = HttpStatus.FOUND;
}
return new ResponseEntity<User>(user, userStatus);
}
Run Code Online (Sandbox Code Playgroud)
任何机构都能解释一下 是ResponseBody/ResponseEntity自己做的工作?当我需要注释要作为JSON返回的对象类.
@RestController本身添加@ResponseBody注释。你可以在Github Issue中看到它
你也可以查看官方的spring教程。在这里您可以检查以下行和示例:
这些控制器方法返回简单的 POJO -
Collection<Bookmark>、 和Bookmark等,除了这种add情况。当指定 的 HTTP 请求传入时Accept header,Spring MVC将循环遍历已配置的内容HttpMessageConverter,直到找到可以从POJO域模型类型转换为 中指定的内容类型Accept header(如果已配置)的类型。
您还可以按照官方文档中的以下行和示例进行操作
@RestController 是结合了@ResponseBody 和@Controller 的构造型注解。不仅如此,它还为您的控制器赋予了更多意义,并且还可能在框架的未来版本中携带额外的语义。
和,
与 @RequestBody 和 @ResponseBody 一样,Spring 使用 HttpMessageConverter 来转换请求和响应流。