_RestTemplateBuilder 1.5.14
_を使用するプロジェクトでこのコードを正常に機能させています
_this.restTemplate = restTemplateBuilder
.setConnectTimeout(connectTimeout)
.setReadTimeout(readTimeout)
.requestFactory(new MyHttpComponentFactoryBuilder()
.build())
.build();
_
_RestTemplateBuilder 2.1.5
_に更新した後、次のコードを取得しました。
_this.restTemplate = restTemplateBuilder
.setConnectTimeout(Duration.ofMillis(connectTimeout))
.setReadTimeout(Duration.ofMillis(readTimeout))
.requestFactory(new MyHttpComponentFactoryBuilder().build().getClass())
.build();
_
コードを実行すると、.requestFactory(new MyHttpComponentFactoryBuilder().build().getClass())
の行を削除すると消える_InvocationTargetException / NullPointerException
_がありますが、デバッグnew MyHttpComponentFactoryBuilder().build().getClass()
はnullではありません
私も提案された解決策を試しました:
_...
.requestFactory(new MyRequestFactorySupplier())
...
class MyRequestFactorySupplier implements Supplier<ClientHttpRequestFactory> {
@Override
public ClientHttpRequestFactory get() {
// Using Apache HTTP client.
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
HttpClient httpClient = clientBuilder.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setBufferRequestBody(false); // When sending large amounts of data via POST or PUT, it is recommended to change this property to false, so as not to run out of memory.
return requestFactory;
}
}
_
しかし、私は_InvocationTargetException / NullPointerException
_も持っています
.getClass()
呼び出しを削除してみてください。requestFactory callがクラスrequestFactory(Class<? extends ClientHttpRequestFactory> requestFactory)
メソッドRestTemplateBuilder
を指している場合、MyHttpComponentFactoryBuilder
クラス
これは動作するはずです(ラムダを使用した場合)
.requestFactory(() -> new MyHttpComponentFactoryBuilder().build())