当使用@ResponseBody
注解返回结果时,Spring默认使用Jackson库将返回结果直接转换为JSON格式输出。这种行为经常会造成一些误解,下面针对一些误区进行解答。
误解一:@ResponseBody
会自动添加@RestController
?
@RestController
注解是@Controller
和@ResponseBody
的结合体,用于指示该控制器的所有方法都将返回JSON格式数据。但是,@ResponseBody
并不会自动添加@RestController
注解,因此需要手动添加才能使控制器类成为@RestController
。
以下是一个示例:
@RestController
@RequestMapping("example")
public class ExampleController {
@GetMapping("getData")
public Map<String, Object> getData() {
Map<String, Object> map = new HashMap<>();
map.put("id", 1);
map.put("name", "example");
return map;
}
}
误解二:@ResponseBody
只能返回JSON格式?
@ResponseBody
注解默认将返回结果转换为JSON格式输出,但并不意味着该注解只能返回JSON格式数据。SpringMVC框架支持返回多种格式的数据,包括JSON、XML、HTML等。
以下是一个示例:
@GetMapping(value = "/getXml", produces = "application/xml")
@ResponseBody
public User getXml() {
User user = new User();
user.setId(1);
user.setName("example");
user.setAge(20);
return user;
}
在上面的示例中,我们在@GetMapping注解中指定了produces参数,表示返回的数据格式是XML格式。另外,由于使用了@ResponseBody注解,SpringMVC会自动将返回结果转换为XML格式输出。如果需要返回HTML格式数据,只需将produces参数的值改为"text/html"即可。
综上所述,@ResponseBody
默认输出的是JSON格式数据,但并不意味着只能返回JSON格式数据,也不会自动添加@RestController
注解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于@ResponseBody 默认输出的误区的解答 - Python技术站