假设我有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使用明确定义的转换器?