1

バージョン 2.1.7 で実行されているスプリング ブート アプリケーションがあります。接続と読み取りタイムアウトを設定するために、Rest Template Builder を使用してカスタム Rest テンプレートを実装しようとしています。私は 2.1.7 で実行しているので、Rest Template Builder を使用する必要があることを知りました。カスタム レスト テンプレートのコードを以下に示します。この残りのテンプレートはアプリケーションのさまざまなコンポーネントで使用されるため、コードの他の領域でこの残りのテンプレートを呼び出すには支援が必要ですが、そうするのに助けが必要です。これに関するアドバイスは大歓迎です。ありがとう!

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

カスタマイザーを拡張する必要はありません。これはやり過ぎです。これを行う最も簡単でクリーンな方法は、 の Bean を作成し、RestTemplateそれを依存関係として注入することです。

たとえば、構成を持ち、そこで 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 に答える