본문 바로가기

Programing/Framework

Spring boot: HttpMessageConverters 는 누가 만들어줄까?

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([])
    }