вызов метода с помощью Rest Template Builder - PullRequest
0 голосов
/ 12 октября 2019

Я создал этот шаблон отдыха с компоновщиком шаблона отдыха и установил время ожидания соединения и чтения. Мне нужно вызвать этот шаблон отдыха из других методов в программе, но я не уверен, как это сделать. Пожалуйста, помогите, спасибо заранее!

//create rest template with rest template builder and set connection and read timeouts        @Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {



    return restTemplateBuilder
            .setConnectTimeout(Duration.ofMillis(connectTimeout))
            .setReadTimeout(Duration.ofMillis(readTimeout))
            .build();
}

// this is an example method that calls rest template, unsure what goes in the parameter section
@Bean
public example example() {
    return new restTemplate(what goes here)
    );
}

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Если вы создали свой собственный RestTemplate, вы можете автоматически связать его с любым классом, где вы хотите вызвать его и использовать тот. если у вас более 1 RestTemplates, вы можете использовать @Qualifier выше RestTemplate Bean и использовать то же самое в вызывающем классе.

0 голосов
/ 12 октября 2019

RestTemplateBuilder - это компонент, предоставляемый Spring boot. Вы можете внедрить это в любой из ваших классов bean-компонентов Spring.

Затем вы просто хотите сконфигурировать ваш restTemplate при создании вашего класса bean-компонента Spring и сохранить его в виде поля. Вы можете сделать что-то, как показано ниже (Это не единственный способ).

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import java.time.Duration;

@Configuration
public class MyExampleRestClientConfiguration {
    private final RestTemplateBuilder restTemplateBuilder;

    @Autowired
    public MyExampleRestClient(RestTemplateBuilder restTemplateBuilder) {
        this.restTemplateBuilder = restTemplateBuilder;
    }

    @Bean
    public RestTemplate restTemplate() {
        return restTemplateBuilder
        .setConnectTimeout(Duration.ofMillis(connectTimeout))
        .setReadTimeout(Duration.ofMillis(readTimeout))
        .build();
    }
}

Теперь в каком-то другом классе бобов весной вы можете просто подключить боб restTemplate и использовать повторно.

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

@Component
public class MyExampleRestClient {
  private final RestTemplate restTemplate;

  @Autowired
  public MyExampleRestClient(RestTemplate restTemplate) {
      this.restTemplate = restTemplate;
  }

  //Now You can call restTemplate in any method
}

Вы можете отослать этот для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...