Spring boot如何自定义HttpMessageConverter

2024-05-26

后端,Spring boot项目(v1.3.0.发布),向前端提供Rest JSON Api,刚才遇到错误:

Infinite recursion (StackOverflowError)

我决定改变习惯FastJsonHttpMessageConverter https://github.com/alibaba/fastjson/blob/master/src/main/java/com/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter.java,代码如下

@Bean
public HttpMessageConverter httpMessageConverter() {
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();

    return fastJsonHttpMessageConverter;
}

但它不起作用,实际上它使用默认值HttpMessageConverter。虽然没有出现上述错误,但输出并不符合我的预期。例如

suppliers: [
    {
        $ref: "$.value"
    }
]

现在更改上面的代码

@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter() {
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
    return fastJsonHttpMessageConverter;
}

这次可以了,我想知道为什么方法名称必须是mappingJackson2HttpMessageConverter?如果使用其他方法名称如何配置?


看到这个之后官方文件 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-message-converters,我知道如何定制转换器。

@Bean
public HttpMessageConverters customConverters() {
    HttpMessageConverter<?> additional = new FastJsonHttpMessageConverter();
    return new HttpMessageConverters(additional);
}

修改我的主要帖子,实际上下面的代码不起作用。

@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter() {
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
    return fastJsonHttpMessageConverter;
}

如果您在其中设置断点,Spring Boot 永远不会进入此方法。

下面的代码也有效。

@SpringBootApplication
public class FooApplication extends WebMvcConfigurerAdapter {


   public static void main(String[] args) {
       SpringApplication.run(FooApplication.class, args);
  }

  @Override
  public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    super.configureMessageConverters(converters);
    converters.add(new FastJsonHttpMessageConverter());
  }

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

Spring boot如何自定义HttpMessageConverter 的相关文章

随机推荐

  • Apache Flink 动态设置 JVM_OPT env.java.opts

    是否可以设置自定义 JVM 选项env java opts提交作业时未在作业中指定conf flink conf yaml file 我问的原因是我想在 log4j 中使用一些自定义变量 我也在 YARN 上运行我的工作 我已经使用 CLI
  • 将 2 个不同表中的 2 个值相乘

    我正在尝试使用 SQL 将值 X 乘以值 Y 值 X 位于表 A 中 B 位于表 B 中 我找不到这个问题的答案 表交易 ID Transaction ID Total Amount 1 001 1200 2 002 1500 3 003
  • SHA-256 BigQuery 函数或 UDF

    有人有 UDF 或知道在 BigQuery 中支持 SHA 256 的计划吗 https cloud google com bigquery query reference syntax 16 https cloud google com
  • 在 firebase 函数中设置 dotenv

    我正在尝试将我制作的小型节点表达应用程序移动到 firebase 函数中 该文件有dotenv变量 早些时候我想如果我只是部署并依赖 dotenv 它会起作用 但那并没有发生 于是 我去了firebase的环境配置文章了解如何设置 env
  • 使用express/connect-redis在页面重新加载时抓取现有会话

    使用 connect express 和 socket io 我试图让我的应用程序在重新连接时获取会话详细信息 我的会话显然在客户端连接时工作 但如果我刷新浏览器上的页面 它会忘记所有内容 我的会话cookie肯定是一样的 所以不是那样的
  • 在更新面板中提交表单后运行javascript?

    这真让我抓狂 我在这里阅读了至少 5 个与我的问题密切相关的问题 可能还通过谷歌搜索阅读了 5 页左右的内 容 我就是不明白 我试图在用户填写 已提交注册 的表单后出现一个 jqueryui 对话框 然后重定向到另一个页面 但我一生都无法让
  • 如何处理 BrainTree 中的 Webhook

    我正在尝试使用 BrainTree webhooks 进行订阅交易 但无法让我的页面进行验证 来自脑树 https www braintree payments com docs php webhooks destination verif
  • 将屏幕从 Windows Phone 7 发送到 PC 的工具

    手机屏幕投射到电脑上用什么工具 我在演示文稿中看到过它 但在任何地方都找不到它 Thanks 这是目前仅由微软员工使用的内部工具 相机 投影仪是另一种选择
  • PHP 类扩展字符串变量

    是否可以声明一个类并让它扩展一个变量 class Child extends parentClass 是的 它是通过 eval 实现的 但不建议这样做
  • Java 正则表达式 电子邮件

    首先 我知道不建议使用正则表达式发送电子邮件 但我必须对此进行测试 我有这个正则表达式 b A Z0 9 A Z0 9 A Z 2 4 b 在Java中 我是这样做的 Pattern p Pattern compile b A Z0 9 A
  • 在plotly python中使用按钮过滤不同的数据

    我遵循 PythononToast的答案如何在使用 Python 中的 Plotly 创建的图中添加按钮或下拉菜单 https stackoverflow com questions 65710352 how can i add a but
  • Symfony:为 ManyToOne-OneToMany 关系嵌入表单集合

    我正在使用 Doctrine 和这三个 相关 实体运行 Symfony 2 3 出版物 Author and 作者发表 Both Author and 出版物具有多对一关系作者发表 所以它基本上是一个多对多关系Author and 出版物但
  • 使用 C# 恢复数据库

    我正在尝试使用 Microsoft SqlServer Management Smo 将数据库从一台服务器恢复到另一台服务器 问题是我不断收到错误消息 指出找不到 MDF 文件 原因是它试图在 SQL 实例名称的数据文件夹中查找它的来源 而
  • Eclipse 不从目标平台下载相同版本的最新 jar

    我在 Eclipse IDE Indigo V3 7 2 中遇到一个奇怪的问题 我们使用托管在服务器上的目标平台 该服务器是使用 b3 聚合过程构建的 p2 存储库 我们从不同的团队获得某些组件和功能 每次他们提供插件时 版本号都保持不变
  • iOS CoreBluetooth:状态保存和恢复

    希望在这里得到一些意见 在我当前的 iOS 项目中 我使用 CoreBluetooth 和 swift 该应用程序可以在后台使用 CoreBluetooth 进行通信 这基本上可以工作 外设需要与 iOS 设备建立有效连接才能按预期工作 每
  • padStart 有什么替代方案[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我在 javascript 中使用 padStart 但它不适用于 Internet Explorer
  • {PHP} 致命错误:不在对象上下文中时使用 $this (Joomla)

    我真的不了解 php 并且碰壁了 问题是我的网站显示以下错误 Fatal error Using this when not in object context in hermes web07 b2350 pow thefoodie htd
  • Objective-c 截断字符串并在末尾添加省略号

    如何在 Objective C 中截断字符串 然后在末尾添加省略号 NSString origString A very long string blah blah blah const int clipLength 18 if origS
  • 按年月分组并在 Python 中查找前 N 个最小值列

    基于来自的输出数据帧这个链接 https stackoverflow com questions 69931611 resample by month and find certain number of columns which hav
  • Spring boot如何自定义HttpMessageConverter

    后端 Spring boot项目 v1 3 0 发布 向前端提供Rest JSON Api 刚才遇到错误 Infinite recursion StackOverflowError 我决定改变习惯FastJsonHttpMessageCon