Spring

Spring Boot에서 RestTemplate 빈 등록을 해야할까?

jnk1m 2022. 12. 14. 09:27

이 댓글 보고 찾아보았다.

 

RestTemplateAutoConfiguration (Spring Boot 3.0.0 API)

java.lang.Object org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration

docs.spring.io

 

 

 

@Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

그냥 new해서 레스트 템플릿 만들면 동작은 하는데 서버에 올리면 장애가 날거다.

accountOpenApi가 backendServer를 호출해서 작업하는 리소스가 부족해서 응답을 느리게 해주면 openApi는 무한대로 기다리게 된다. 

 

해결 방법

RestTemplateBuilder를 이용하자 

@Bean
        public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
            return restTemplateBuilder
                    .setReadTimeout(Duration.ofSeconds(3L))
                    .setConnectTimeout(Duration.ofSeconds(3L))
                    .build();
        }

RestTemplateBuilder를 주입 받아서 ReadTimeOut ConnectTimeOut 설정해주기

ReadTimeOut: 기다리는 시간. 3초 기다리고 응답 없으면 예외 발생. 응답하는 서버의 시간에 따라 유연하게 대응.