gradle - 如何配置 micronaut 序列化以使用开放 api 生成的模型?

标签 gradle jackson micronaut swagger-codegen graalvm

问题描述
我有一个项目,我正在用 micronaut 构建一个 RESTful api。响应正文中返回的模型是从开放的 api 规范(使用 gradle 插件)生成的。
但是,由于某种原因,它 micronaut 总是将任何模型对象作为空的 json 对象 {} 返回,即使它应该是一个填充对象。
资源库链接
https://gitlab.com/connorbutch/open-api-micronaut-quarkus
输出示例
预期的:

[
     {
           "id": 123
           "name": "Scruffy"
           "tag": "Chuck's pup"

     }
]
实际:[{}] 如何重现
  • 本地克隆代码 (git clone ....)
  • 导航到根目录 (cd .......)
  • 运行 gradle build (gradle clean build)
  • 导航到阅读理解服务器-impl (cd reading-comprehension-server-impl)
  • 运行 docker build(docker build . -t .... 或只运行 ./docker-build.sh)<-- 这一步会占用一点时间和内存,因此可能会关闭其他应用程序
  • 运行刚刚构建的 docker 镜像(docker run -p 8080:8080 reading-comprehension-server-impl)
  • 向服务器发出 get 请求 (http://localhost:8080/pets?limit=4)

  • 我的想法
    我很好奇的一些事情包括:
  • 这可能是(gradle)范围问题吗?我应该使用 api 而不是实现 @Introspected 注释(只是为了看看它是否有效)?
  • 这可能是在另一个模块/jar 中生成的模型的问题吗?我应该将这一代转移到同一个项目(只是为了看看它是否有效)?
  • 这可能是跨模块的不同 micronaut 版本的问题吗?
  • 是否有某种方式可以注入(inject)(或以其他方式)获取对 bean 序列化程序的引用以进一步调试?

  • 其他探索
  • 我修改了其中一个端点以从同一模块返回一个对象模型(只是一个虚拟响应),并且以正确的格式返回......所以它可能是版本问题或构建问题(因为它在另一个模块)
  • 我修改了包含的模块以使用相同的 micronaut 版本(现在是 1.3.0,以后想升级到 2.x.x),但仍然不能正确序列化
  • 我创建了一个试图在响应正文中序列化到这个模块中的类的副本,并且它起作用了(参见 NotARealPet.java)。现在的问题是,我可以将其配置为工作,还是应该(暂时)更改要在该项目的构建目录中生成的 api?
  • 最佳答案

    我找到了答案。即使使用@Introspected 编译了一个类,graal vm(native-image cli)也不会查看这些类。为了包含这些,我最终包含一个类,指定内省(introspection)这些类 @Introspected(classes = { Pet.class, Error.class})
    如果有人感兴趣,我会发布一个带有示例的 gitlab 链接

    关于gradle - 如何配置 micronaut 序列化以使用开放 api 生成的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63368209/

    相关文章:

    android - Gradle构建守护进程意外消失了……Android Studio 4.0.1

    java - 如何@autowire 一些 bean 进入 JsonSerializer?

    Micronaut-data 使用 Micronaut-test 模拟 CrudRepository

    java - Micronaut 和 Java Mail API

    java - 运行时错误 PowerMock + Mockito : ProxyFrameworkImpl could not be located in classpath

    android - 在 Gradle 插件中哪里可以找到指定类的所有属性和方法?

    gradle - 如何将文档添加到Gradle插件扩展变量中?

    java - 骡子:Foreach 在 Jackson ArrayNode 对象上循环

    java - 如何告诉 Jackson 反序列化非缺失字段上的更新值(包括嵌套字段)

    java - Micronaut 中是否有 DropwizardTestSupport 的等效项?