1

我有一个在 2.1.7 版上运行的 Spring Boot 应用程序。我正在尝试使用 Rest Template Builder 实现自定义休息模板,以设置连接和读取超时。我知道我需要使用 Rest Template Builder,因为我在 2.1.7 上运行。我的自定义休息模板的代码如下所示。我需要帮助在我的代码的其他区域调用这个休息模板,因为这个休息模板将被我的应用程序的各个组件使用,但我需要帮助这样做。对此的任何建议将不胜感激。谢谢!

public abstract class CustomRestTemplate implements RestTemplateCustomizer {

    public void customize(RestTemplate restTemplate, Integer connectTimeout, Integer readTimeout) {
        restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
        SimpleClientHttpRequestFactory template = (SimpleClientHttpRequestFactory) restTemplate.getRequestFactory();
        template.setConnectTimeout(connectTimeout);
        template.setReadTimeout(readTimeout);
    }
}
4

1 回答 1

5

您不需要扩展定制器,那是矫枉过正。最简单和最干净的方法是创建一个 beanRestTemplate并将其作为依赖项注入。

例如,您可以有一个配置并在那里声明 bean:

@Configuration
public class WebConfig {

    private int fooConnectTimeout = 4000;
    private int fooReadTimeout = 4000;

    @Bean
    public RestTemplate restTemplate(final RestTemplateBuilder builder) {
        return builder.setConnectTimeout(fooConnectTimeout)
                .setReadTimeout(fooReadTimeout)
                .build();
    }
}

现在只需在类中注入 bean,如下所示:

@Service
public class FooService {

    private RestTemplate restTemplate;

    public FooService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    // custom code here....
}

希望有帮助

于 2019-10-15T19:12:31.553 回答