当前位置: 首页 > 知识库问答 >
问题:

Spring Boot和ObjectMapper配置

胡和煦
2023-03-14

使用Spring Boot1.2.2创建Spring MVC应用程序。我也在使用Spring Hateoas。

我遇到的问题是,当我的控制器方法返回列表<>时,我配置的ObjectMapper被正确使用,但当我返回资源类(例如,MyClass extends ResourceSupport)时,使用的是不同的ObjectMapper

尝试配置Jackson的ObjectMapper是一件非常令人沮丧的事情。我遵循了文档,将我自己的objectmapper@bean添加到一个@configuration类中,并用@primary对其进行注释,在序列化list<>时使用了这个类。

在ObjectMapper构造函数断点中设置断点会显示该构造函数被调用了大约20次。我对每个场景都做了一个糟糕的总结:

  1. 我的配置类(@bean@primary注释)
  2. HalObjectMapper
  3. WebMVCConfigurationSupport->RequestMappingHandlerAdapter()->AllenCompassingFormHttpMessageConverter->Jackson2ObjectMapperBuilder
  4. ConfigureMessageConverters()->Jackson2ObjectMapperBuilder
  5. PotentiallyRegisterModule()->Jackson2ObjectMapperBuilder
  6. WebMVCConfigurationSupport->AddDefaultHandlerExceptionResolver()->AllEncompassingFormHttpMessageConverter->Jackson2ObjectMapperBuilder
  7. 2次:WebMVCConfigurationSupport->AddDefaultHttpMessageConverters()->AllEncompassingFormHttpMessageConverter->Jackson2ObjectMapperBuilder
  8. 12次:EndpointMBeanExporter(弹簧引导执行器)

共有1个答案

查宜修
2023-03-14

我建议使用application.properties配置Jackson或者,如果需要更多的控制,声明自己的Jackson2ObjectMapperBuilderbean。无论哪种情况,您都将在应用程序上下文中得到一个Jackson2ObjectMapperBuilderbean,其他组件可以使用该bean创建具有所需配置的ObjectMapper,或者将该配置应用于任何现有的ObjectMapper

编辑:在改进执行器的objectmapper用法方面存在一个问题。

 类似资料:
  • 我有教育问题: 存在具有windows server 2003(AD)的虚拟机,其中包含用户及其密码。已建立与机器的连接(ip:192.168.56.101:389)。 Web应用程序的目的是使用户能够在AD中更改他的密码。 问题:无法配置到windws server 2003的连接。 我从这个教程开始https://spring.io/guides/gs/authenticating-ldap/

  • 问题内容: 我的目标是配置,使其仅序列化带有注释的元素。 为了做到这一点,我按照下面的说明进行了说明,该说明说明了如何配置对象映射器。 我包括自定义描述objectmapper 这里。 但是,当类被序列化时,它仍包含json中的所有属性。 有人暗示吗?提前致谢 Jackson 1.8.0 spring 3.0.5 CustomObjectMapper servlet.xml NumbersOfNe

  • 我需要在Spring-boot应用程序中使用默认的ObjectMapper作为单个实例。我是否可以简单地在应用程序内部@autowire ObjectMapper(在Spring-boot应用程序中默认创建的实例)而不创建@bean(因为我不想更改ObjectMapper的任何功能) https://docs.spring.io/spring-boot/docs/current/reference

  • 我想在我的项目中使用Jackson的配置版本(忽略空值和snake_case,也使用一些自定义模块)。 在我的大型项目中,我无法让Spring MVC真正使用这个映射器。 如果我现在查看调试器中的值,它是。但是如果我让控制器运行,实际的响应是。 当我删除时,它就可以工作了。如何将配置的映射器与MVC一起使用,而不删除Web MVC的其余自动配置?

  • 问题内容: 我的目标是配置,使其仅序列化带有注释的元素。 为了做到这一点,我按照下面的说明进行了说明,该说明说明了如何配置对象映射器。 我包括自定义描述这里。 但是,当类被序列化时,它仍包含中的所有属性。 有人暗示吗?提前致谢 杰克逊1.8.0Spring3.0.5 CustomObjectMapper servlet.xml 问题答案: 使用Spring Boot(1.2.4)和Jackson(

  • 因此,我理解在实现方法时,应该首先调用,这样(潜在的)超类就可以完成它的工作,然后进行自己的克隆。这一切都确保超类中的非变量是列表/非克隆的。 现在,如果我使用Jacksons ObjectMapper进行克隆: 我决定这样做,因为我的对象()已经完全可以与json进行转换,json基本上就是在克隆。 在这种情况下调用super.clone()是没有用的,对吧?Jackson无论如何都会在以这种方