我可以指定Spring的RestTemplate
所使用的JacksonObjectMapper
吗?
我不是100%,这是我需要做的,但见下文的细节。
**背景:**在this StackOverflow post的帮助下,我将@JsonFilter添加到了我的域类中,并编辑了我的jax-rs web服务(在CXF中实现)。现在,我能够成功地在RESTful API中动态选择要返回的域类字段。到目前为止,一切都很顺利。
我在JUnit测试中使用Spring的RestTemplate来测试我的RESTful API。在我将@JasonFilter添加到我的域类之前,这一直工作得很好。现在我遇到了以下异常:
出现以下异常:I/O错误:无法解析ID为'apiFilter'的BeanPropertyFilter;未配置筛选器提供程序;嵌套的异常是一个异常:无法解析ID为“apiFilter”的BeanPropertyFilter;未配置筛选器提供程序
您可以在这里找到一个新的模板,它是一个新的框架。
为简洁起见,省略了堆栈跟踪的其余部分
异常错误:无法解析ID为“apiFilter”的BeanPropertyFilter;未配置筛选器提供程序
在代码库中查找过滤器(代码库)
我在服务器端遇到了一个类似的问题,并通过向JacksonObjectMapper
提供一个FilterProvider
来解决它(在this post的帮助下),如下所示:
ObjectMapper mapper = new ObjectMapper();
FilterProvider filters = new SimpleFilterProvider().addFilter("apiFilter", SimpleBeanPropertyFilter.filterOutAllExcept(filterProperties));
我可以在RestTemplate方面做一些类似的事情吗?任何关于如何解决这个问题的想法都是非常感谢的。
需要说明的是,在客户机RestTemplate端,我根本不想过滤域对象属性。
2条答案
按热度按时间o0lyfsai1#
我可以指定Spring的RestTemplate使用的Jackson对象Map器吗?
通过执行以下操作,我可以强制RestTemplate使用自定义的ObjectMapper:
This website提供了上述部分代码的示例。
t30tvxxf2#
如果你使用的是
TestRestTemplate
,那么你可以得到RestTemplate
的类,然后修改它的MappingJackson2HttpMessageConverter
来包含你的过滤器: