有一个spring-boot应用程序(web + jpa) 所以,我有控制器:
@RestController
public class CustomerController {
@Autowired
private CustomerService customerService;
@RequestMapping(value = "/customers", method = RequestMethod.GET)
public @ResponseBody List<Customer> findAllCustomers() {
return customerService.findAllCustomers();
}
@RequestMapping(value = "/customers", method = RequestMethod.POST)
public void addCustomer(@RequestBody Customer customer) {
customerService.addCustomer(customer);
}
型号:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name="customer")
@XmlRootElement(name="customer")
public class Customer{
@Id
private String id;
private String name;
public Customer(String id, String name) {
this.id = id;
this.name = name;
}
public Customer() {
}
public String getId() {
return id;
}
@XmlElement
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
}
还有用于绑定jpa和rest的服务层。
当我请求时:
<customer>
<id>first</id>
<name>first name of metric</name>
</customer>
这很好,客户已添加到数据库中,但是,当我尝试获取所有客户时,响应为json格式,但是我希望使用xml。如何解决该问题?
答案 0 :(得分:1)
将控制器方法标记为产生application/xml
个响应(produces = MediaType.APPLICATION_XML_VALUE
)。
答案 1 :(得分:1)
我认为您在调用rest方法时使用了错误的接受类型。
@ResponseBody
将根据外部客户端的功能和类路径上可用的库自动序列化返回值。如果Jackson在类路径中可用,并且客户端指示他们可以接受JSON,则返回值将自动作为JSON发送。如果JRE为1.7或更高(意味着JRE包含JAXB),并且客户端指示他们可以接受XML,则返回值将自动以XML的形式发送。
答案 2 :(得分:0)
通过添加解决
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>