Java Micronaut忽略客户端接受的内容类型

Java Micronaut忽略客户端接受的内容类型,java,micronaut,Java,Micronaut,我试图创建一个micronaut端点,该端点根据客户端接受的内容生成JSON或XML响应。我写了一些代码 @Get(value = "/notifications/{notificationId}", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) Notification fetchNotification(@PathVariable String notificationId)

我试图创建一个micronaut端点,该端点根据客户端接受的内容生成JSON或XML响应。我写了一些代码

  @Get(value = "/notifications/{notificationId}", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
  Notification fetchNotification(@PathVariable String notificationId);
在这段代码的实现中,我只需将select放入数据库并返回POJO。 我假设如果请求头包含“accept-application/xml”,micronaut应该以xml的形式返回响应。另外,对于JSON。但我在请求头上独立地得到一个JSON响应。 我做了一些调查,发现

io.micronaut.http.server.netty.RoutingInBoundHandler#prepareRouteForExecution
在这里,micronaut创建了一个没有contentType的HttpResponse。然后,它在中选择第一个内容类型,生成并返回响应。首先我有MediaType.APPLICATION_JSON,所以micronaut返回JSON。如果我更改它们的顺序,micronaut将返回XML

此外,我还检查了另一个端点,它应该只返回json

  @Get(value = "/notifications/last", produces = MediaType.APPLICATION_JSON)
  Notification fetchLastNotification();
我也看到了同样的行为。
为什么micronaut会忽略客户端接受的内容类型?我应该在控制器中手动创建正确的HttpResponse吗?

您是否使用
io.micronaut.xml:micronaut-jackson-xml
?是的,我是。没有它,我就不会序列化XML“没有它,我就不会序列化XML”——这不是真的。您可以配置自己的序列化程序。是否使用Micronaut 2.0.x?@JeffScottBrown Thak You。我用的是1.3.4。我更新了Micronaut,但它工作正常