如何在Spring MVC(非Spring Boot)应用程序中自定义Jackson

德布鲁

Spring MVC 4.3.29和Java 8(当前平台约束),以及大多数XML配置,除了一些注释注释的Controller类。

简而言之,我想让该ObjectMapper实例由Spring JSON反序列化自动使用,并且要将其设置FAIL_ON_UNKNOWN_PROPERTIEStrue

我看到了几个 相关的 问题,但是所有示例似乎都是Spring Boot和/或Java配置。@Autowired在我的WebSphere环境中,所有建议的bean(Mapper,Builder等)都没有任何值。

希望我只是在某个地方缺少一些简单的胶水。

编辑:ah,我以为我有这个:

@Configuration
public class CustomWebConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {

        for (HttpMessageConverter<?> converter : converters) {
            if (converter instanceof MappingJackson2HttpMessageConverter) {
                ((MappingJackson2HttpMessageConverter) converter).getObjectMapper().
                    enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
                break;
            }
        }
    }
}

使用调试器,我可以看到它被命中并更改了预期的标志。但是,当使用时,该行为无效。我不再有任何XML覆盖,但是我仍然有“ master” <mvc:annotation-driven/>我想知道它们是否彼此混淆...

德布鲁

好的,是的,只要结合使用@EnableWebMvc而不是<mvc:annotation-driven/>

@EnableWebMvc
@Configuration
public class CustomWebConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {

        for (HttpMessageConverter<?> converter : converters) {
            if (converter instanceof MappingJackson2HttpMessageConverter) {
                ((MappingJackson2HttpMessageConverter) converter).getObjectMapper().
                    enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
                break;
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Spring Boot中捕获非MVC和非REST异常

如何在Spring Boot应用程序中配置PageableHandlerMethodArgumentResolver

防止在Spring Boot应用程序中针对自定义异常的堆栈跟踪日志记录

在Spring Boot应用程序中重定向到自定义错误页面时出错

当用户在Spring Boot应用程序中输入无效的URL时如何显示自定义404页面?

无论在何处定义,如何在Spring Boot应用程序中获取有效的Properties?

使用IntelliJ在Spring Boot中自定义应用程序属性

如何在Spring Boot应用程序中将参数传递给自定义JSON反序列化器

在自定义启动器中访问Spring应用程序名称

在Spring Boot应用程序中创建自定义连接池

如何在非Spring Boot应用程序中设置Prometheus端点

用于Spring Boot应用程序的Logback自定义数据库追加器

在Spring Batch应用程序中自定义步骤的参数

如何在Spring Boot应用程序中覆盖DefaultListableBeanFactory?

如何在Spring Boot应用程序中使用命令行参数读取自定义属性文件

在Spring应用程序中实现自定义验证的最佳方法是什么?

如何在Spring Boot中为应用程序yml定义复杂列表?

如何在Spring MVC中配置自定义MediaType?

如何为Spring Boot应用程序设置自定义Http标头“服务器”

如何将自定义ApplicationContextInitializer添加到Spring Boot应用程序?

如何在Spring Boot应用程序中为Jetty服务器使用自定义主体内容自定义ErrorHandler类

Spring-Boot:如何将自定义嵌套的应用程序属性绑定到@ConfigurationProperties类?

Spring Boot应用程序自定义验证注释不会触发

如何在Spring MVC中执行自定义验证?

如何在Spring MVC中开始支持自定义处理程序方法响应类型?

自定义Spring Security应用程序中的无限循环

如何在 Spring Boot 应用程序中从 Api 网关(Zuul)调用外部服务(非 MSA)

如何在 Spring Boot 应用程序的自定义 yaml 文件中使用环境变量?

如何在intellij中运行spring boot应用程序?