Programing/Framework
Spring boot: HttpMessageConverters 는 누가 만들어줄까?
나모찾기
2021. 7. 23. 18:51
RestTemplate 에 대해 통합 테스트를 만드는 과정에서 HttpMessageConverters 빈이 없다고 에러가 났다.
그러면 이 HttpMessageConverters 빈은 누가 만들어주고 있었을까?
스프링 부트에는 여러 Auto Configuration 이 있는데 HttpMessageConvertersAutoConfiguration 가 해주고 있었다.
package org.springframework.boot.autoconfigure.http;
@Configuration
@ConditionalOnClass(HttpMessageConverter.class)
@AutoConfigureAfter({ GsonAutoConfiguration.class, JacksonAutoConfiguration.class, JsonbAutoConfiguration.class })
@Import({ JacksonHttpMessageConvertersConfiguration.class, GsonHttpMessageConvertersConfiguration.class,
JsonbHttpMessageConvertersConfiguration.class })
public class HttpMessageConvertersAutoConfiguration {
// ..
@Bean
@ConditionalOnMissingBean
public HttpMessageConverters messageConverters() {
return new HttpMessageConverters(this.converters);
}
FooClient -> RestTemplate -> messageConverters
하지만 직접 Bean 으로 만드는 것도 크게 어렵지 않다.
@SpringBootTest(classes = [MyIntegrationSpec])
class MyIntegrationSpec extends Specification {
@Bean
HttpMessageConverters messageConverters() {
return new HttpMessageConverters([])
}