Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何在Spring中为HTTP REST响应体配置Jackson_Json_Spring_Rest_Spring Boot_Jackson - Fatal编程技术网

Json 如何在Spring中为HTTP REST响应体配置Jackson

Json 如何在Spring中为HTTP REST响应体配置Jackson,json,spring,rest,spring-boot,jackson,Json,Spring,Rest,Spring Boot,Jackson,我正在尝试使用Spring 4.3.4和Spring Boot 1.4.2构建REST服务。我需要做的是配置Jackson实例,使我能够访问对象映射器的实际配置(例如,仅使用字段,不使用getter/setter方法等) 在调试Spring代码的长时间会话后,我尝试了以下所有操作: @Bean用于Jackson2对象映射器 Jackson2ObjectMapperBuilder的@Bean 用于Jackson2ObjectMapperFactoryBean的@Bean 以上这些都没有任何影响

我正在尝试使用Spring 4.3.4和Spring Boot 1.4.2构建REST服务。我需要做的是配置Jackson实例,使我能够访问对象映射器的实际配置(例如,仅使用字段,不使用getter/setter方法等)

在调试Spring代码的长时间会话后,我尝试了以下所有操作:

  • @Bean
    用于Jackson2对象映射器
  • Jackson2ObjectMapperBuilder的
    @Bean
  • 用于Jackson2ObjectMapperFactoryBean的
    @Bean
以上这些都没有任何影响。最终,我想我已经找到了这一切的根本原因。以下是Spring如何真正创建它的Jackson实例:

  • AllencompacsingFormHttpMessageConverter
    调用
    新映射Jackson2HttpMessageConverter()
  • 。。。它构建了一个新的
    Jackson2ObjectMapperBuilder
  • …通过静态方法
    Jackson2ObjectMapperBuilder.json()
以上所有内容都是
静态的
(!!),并且完全忽略了任何类型的配置,无论是XML、Java
@configuration
类还是
应用程序.properties


问题是:我是否需要实现我自己的转换器来取代
AllencompacsingFormHttpMessageConverter
(这可能吗?),或者是否有其他解决方案来配置Jackson实例?

我们整天都在按照手册中描述的方式进行。这样做是行不通的,Spring源代码忽略了配置。在这种情况下,RTFM不是很有用……您是否已将
@EnableWebMvc
注释添加到配置中?因为如果您有,这将禁用对MVC的Spring引导支持/自定义。因此,如果它存在,请将其移除。否则,请发布一个完整的最小示例来重现问题。是的,我们确实激活了@EnableWebMvc注释。基本上,我们通过实现配置适配器和修改消息转换器来“修复”这个问题。我们用我们自己的实现替换了AllEncompassingHttpMessageConverter,除了我们自己的Jackson配置之外,它做了完全相同的事情。这可能不是最漂亮的解决方案,但它确实有效。然而,我对Spring Boot配置的信心再次动摇。我重复一遍。您不能有EnableWebMvc。移除它,一切都会更好。我们整天都在按照手册中描述的方法来做。这样做是行不通的,Spring源代码忽略了配置。在这种情况下,RTFM不是很有用……您是否已将
@EnableWebMvc
注释添加到配置中?因为如果您有,这将禁用对MVC的Spring引导支持/自定义。因此,如果它存在,请将其移除。否则,请发布一个完整的最小示例来重现问题。是的,我们确实激活了@EnableWebMvc注释。基本上,我们通过实现配置适配器和修改消息转换器来“修复”这个问题。我们用我们自己的实现替换了AllEncompassingHttpMessageConverter,除了我们自己的Jackson配置之外,它做了完全相同的事情。这可能不是最漂亮的解决方案,但它确实有效。然而,我对Spring Boot配置的信心再次动摇。我重复一遍。您不能有EnableWebMvc。去掉它,一切都会好得多。