如何防止Spring Boot使用不需要的HttpMessageConverter

时间:2017-06-27 11:39:34

标签: spring-mvc spring-boot

假设我有Spring Boot应用程序,它公开HTTP API并通过HTTP与一些外部服务进行通信。我需要为每个端点配置不同的HttpMessageConverter - 一个用于我们的API入口点,一个用于每个外部服务。所有这些都是MappingJackson2HttpMessageConverter的实例。

很容易实现。例如,我们可以定义由Spring添加到HttpMessageConverters的MappingJackson2HttpMessageConverter的全局bean,以及使用且仅对RestClients可见的嵌套bean(也是MappingJackson2HttpMessageConverter的实例)。

我的问题是如何防止开发人员错误地添加新的全局可见bean,它将自动添加到HttpMessageConverters并可以用来代替预期的bean?

我想到的最简单的解决方案是添加这样的测试:

   @Test
   public void shouldBeOnlyOneInstanceOfHttpMessageConverter() { 
     assertThat(applicationContext.getBeansOfType(MappingJackson2HttpMessageConverter.class)).hasSize(1);
   }

它应该有用,但看起来有点棘手。有没有办法强制Spring Boot使用明确定义的转换器?

0 个答案:

没有答案