Jackson POJOPropertyBuilder 在 POJO 中找到多个 setter

2023-12-21

我们正在使用 Spring Web MVC 3.2.2 和 Jackson Databind 2.4.4(以及许多其他库......)开发一个相当大的 JSON REST API。

我正在尝试使用swagger-springmvc https://github.com/martypitt/swagger-springmvc,但我的一些 DTO 遇到了麻烦。

无论我是否使用简单的@EnableSwagger或者更复杂的 swagger 配置,启动 Tomcat 7 时我总是遇到以下异常:

java.lang.IllegalArgumentException: Conflicting setter definitions for property "year": javax.xml.datatype.XMLGregorianCalendar#setYear(1 params) vs javax.xml.datatype.XMLGregorianCalendar#setYear(1 params)
at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getSetter(POJOPropertyBuilder.java:303)
at com.mangofactory.swagger.models.Annotations.findPropertyAnnotation(Annotations.java:33)
at com.mangofactory.swagger.models.property.bean.BeanModelProperty.<init>(BeanModelProperty.java:26)
at com.mangofactory.swagger.models.property.bean.BeanModelPropertyProvider.beanModelProperty(BeanModelPropertyProvider.java:166) (...rest of stacktrace )

上面提到的属性“year”只是一个例子,在不包含属性year的类的情况下尝试相同的方法。

奇怪的是杰克逊两次找到了相同的方法/设置器:javax.xml.datatype.XMLGregorianCalendar#setYear(1 params) vs javax.xml.datatype.XMLGregorianCalendar#setYear(1 params

我花了一些时间使用调试器,注意到一些 DTO 似乎很好地通过了冲突设置器的检查。

我现在花了很多时间在这个问题上,但无法想出解决方案。我在 Google 上找到的有关此异常的大多数页面都讨论了重载方法/设置器,而我的 DTO 则不是这样 - 它们是简单的对象,除了属性、设置器和获取器之外什么也没有。

任何帮助将不胜感激!


问题是XMLGregorianCalendar有两个setYear方法:setYear(int year) and setYear(BigDecimal year)。你需要告诉 swagger 忽略其中一个,你可以配置一个mixin http://wiki.fasterxml.com/JacksonMixInAnnotations为了XMLGregorianCalendar只使用吸气剂(类似于this http://stairs-jumper.livejournal.com/33244.html)。如果 XMLGregorianCalendar 仅在返回值的上下文中使用,则这将起作用。

如果不是这种情况,您可以使用以下命令设置替换类型directModelSubstitute option https://github.com/martypitt/swagger-springmvc/blob/master/swagger-springmvc/src/main/java/com/mangofactory/swagger/plugin/SwaggerSpringMvcPlugin.java#L284。当你配置时SwaggerSpringMvcPlugin您可以尝试以下选项之一

@Bean
public SwaggerSpringMvcPlugin yourPlugin() {
    ...
    plugin.directModelSubstitute(XMLGregorianCalendar.class, String.class)
    //OR this, depending on how you intend to use it and how you want
    // the serialized/deserialized types to appear on the swagger UI
    plugin.directModelSubstitute(XMLGregorianCalendar.class, Date.class)   
    ...
    return plugin
}

或者,如果您不关心 API 文档中表示的类型,您可以也忽略类型 https://github.com/martypitt/swagger-springmvc#excluding-spring-handler-method-arguments-or-custom-types.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jackson POJOPropertyBuilder 在 POJO 中找到多个 setter 的相关文章

  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • 用 @DataJpaTest 注释的测试不是用 @Autowired 注释的自动装配字段

    我有一个 Spring Boot 应用程序 其中包含 Spring Data Jpa 存储库 我需要围绕这个存储库运行单元 或组件 测试 我对 Spring Data Jpa 没有太多经验 这是我的测试 这很简单 我无法让它通过 impor
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 使用 Java 在浏览器中下载 CSV 文件

    我正在尝试在 Web 应用程序上添加一个按钮 单击该按钮会下载一个 CSV 文件 该文件很小 大小仅约 4KB 我已经制作了按钮并附加了一个侦听器 文件也准备好了 我现在唯一需要做的就是创建单击按钮时下载 csv 文件的实际事件 假设 fi
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 如何在java中使jpeg无损?

    有没有人可以告诉我如何使用编写 jpeg 文件losslessjava中的压缩 我使用下面的代码读取字节来编辑字节 WritableRaster raster image getRaster DataBufferByte buffer Da
  • 具有多种值类型的 Java 枚举

    基本上我所做的是为国家编写一个枚举 我希望不仅能够像国家一样访问它们 而且还能够访问它们的缩写以及它们是否是原始殖民地 public enum States MASSACHUSETTS Massachusetts MA true MICHI
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 在 Spring MVC 3.2 中实现 JSONP

    据我了解 可以在 Spring MVC 的早期版本中使用自定义过滤器来实现 JSONP 此外这个例子 http www iceycake com 2012 06 xml json jsonp web service endpoints sp
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu

随机推荐

  • 数据仓库 - 具有多对多关系的缓慢变化的维度

    举个例子 假设我有一个包含两个维度和一个度量的事实表 事实货币表 项目密钥 int PersonKey 整数 现金金额 两个维度的定义如下 DimProject 0 型维度 即静态 项目密钥 int 项目名称 varchar 50 DimP
  • Glide 预加载不保存在缓存中

    我想在向用户显示图像之前预加载图像 我有一个 ViewPager 其中每个页面都是一张图像 当活动开始时 它会调用 Glide with this load uri preload 之后 所有图像都被预加载 理论上 为了测试预加载是否有效
  • 编写一个简单的语法解析器

    这就是我想做的 在 Php 中 给定一个字符串 得到如下结果 a b c a 是一个返回 true 或 false 的函数 这应该给b or c打电话后a a b d e c 同样的原则 最终结果应该是d e or c a b d e c
  • 本地模拟器分布式计数器扩展的实现

    firebase 扩展分布式计数器 https firebase google com products extensions firebase firestore counter可以直接安装到云端并且运行良好 要为应用程序开发新功能 我需
  • 更改 netCDF 文件的网格大小

    假设我有 2 个 netCDF 数据文件 其中包含同一区域 如南美洲 非洲等 的数据 但网格大小不同 另一个网格大小为 0 5 度 x 0 5 度 另一个网格大小为 1 0 度 x 1 0 度 我想将其网格大小增加或减少到不同的值 例如 0
  • Android 7.1.1 上的 DatagramSocket 问题

    我在 Android 7 1 1 N MR1 的 QA Google Pixel 上遇到了一个非常奇怪的问题 在建立TCP连接时 我们使用UDP Server和Client进行握手 QA 报告与 Pixel 的握手不起作用 在探索 Logc
  • CSS 中应该使用什么引号? [复制]

    这个问题在这里已经有答案了 可能的重复 我们应该在 css 背景 url 中使用哪种类型的引号 需要单引号 双引号还是不需要引号 https stackoverflow com questions 2034575 which type of
  • 我应该将公钥存储在哪里?

    我的 Web 应用程序有一个持续运行的服务来将报告发送到 ftp 服务器 该文件需要使用公钥进行加密 因此我的问题是我应该在哪里存储公钥 我只有一个公钥 所以使用高级密钥库似乎有点矫枉过正 我应该在服务器上手动创建一个文件夹并将其存储在其中
  • 使用 ASP.NET 请求用户获取 Log4net 日志条目

    我的 ASP NET 站点正在使用集成身份验证并关闭模拟 我已将 username 添加到 web config 中的 conversionPattern 中 以将用户名添加到每个日志记录条目中 但是 这将使用应用程序池标识的用户名 而不是
  • Vim 编辑器 - zsh shell ipython magic %ed 找不到编辑器

    我正在尝试使用 IPython 中的 ed 魔法来使用 vim 作为编辑器 vim 已安装 ipython 和 ipython qtconsole 都可以工作 zsh 是最新的 与我的 oh my zsh 安装一起更新 我将我的偏好导出到
  • MS Access 交叉表查询参数

    有没有办法像选择查询一样在查询中引用表单的组合 文本框 我通常在选择查询的条件中使用类似的内容 like forms frmMain qTitleofSomething access adds the brackets for me 但这在
  • 拦截org.springframework.cache.interceptor.CacheInterceptor#invoke的spring aop

    我已经尝试过以下代码 但它不起作用 Component Aspect Order Integer MAX VALUE public class CacheAspect Around execution public org springfr
  • Angular4 中 onScroll 事件触发函数

    我正在尝试显示分页列表 因此 当用户向下滚动时 我想触发一个加载更多项目的函数 但我无法在 滚动 事件上调用该函数 我的 HTML 文档如下所示 div div class row notification row div div 在我的
  • 如何使用libxml2生成XML文件?

    我已经从 xmlsoft org 下载了 libxml2 我用它来解析 xml 文件 现在我想使用相同的 libxml 创建我自己的 xml 文件 如下所示
  • 无法从“App.js”解析“@react-navigation/native” - React Native + 如何解决?

    未定义 无法解析模块 react navigation native from App js 在项目中找不到 react navigation native 如果您确定该模块存在 请尝试以下步骤 1 Clear watchman watch
  • 如何在 TensorFlow v1.9 中下载 MNIST?

    我正在学习 TensorFlow 教程 我已经在python 3 6中安装了Tensorflow r1 9 我有以下导入 from tensorflow examples tutorials mnist import input data
  • Laravel 使用 storage fake 进行测试

    我开发了一个功能来下载基于数据库生成的CSV文件 我已经为此创建了测试并且对我来说工作得很好 但问题是完成测试运行后文件没有被删除 Question 测试完全运行后 使用 storage fake 创建的文件会自动删除吗 如果是的话 它不会
  • NHibernate:返回具有分页子集合的对象的最简单方法?

    我想返回一个父对象 其中子集合急切地加载了所请求的子对象页面 子集 实现这一目标的最佳方法是什么 过滤器 可以使用 ICriteria 查询吗 我正在使用 SetFirstResult 和 SetMaxResults 对聚合根结果的集合进行
  • 通用二进制文件是否包含 iPhone 上 App Bundle 中的所有重型 ipad 图形?该怎么办?

    由于 iPad 3 配备视网膜显示屏 我开始担心 iPhone 和 iPod touch 设备上通用二进 制文件中的 图像垃圾 数量 显然他们不需要这些资源 我从来没有真正检查过 但也许有人knows这个 当 iPhone 下载通用二进制文
  • Jackson POJOPropertyBuilder 在 POJO 中找到多个 setter

    我们正在使用 Spring Web MVC 3 2 2 和 Jackson Databind 2 4 4 以及许多其他库 开发一个相当大的 JSON REST API 我正在尝试使用swagger springmvc https githu