Прежде всего, я не знаю глобальную структуру вашего кода, но позвольте мне предположить:
Класс конфигурации:
@Configuration
public class appConfig{
@Bean
RestTemplate restTemplate(){
return new RestTemplate();
}
@Bean
ObjectMapper objectMapper(){
return new ObjectMapper();
}
}
Класс обслуживания:
import guru.springframework.domain.Qoate;
// Other imports
@Service
public class service{
@Autowired
private RestTemplate restTemplate;
@Autowired
private ObjectMapper objectMapper;
@Autowired
private QuoteRepository quoteRepository;
public void populateQoats {
// You can chose one of these tow cases
// Case 1
ResponseEntity<List<Qoate>> response = restTemplate.exchange(
"http://rest to get the list of Qoates",
HttpMethod.GET,
null,
new ParameterizedTypeReference<List<Qoate>>(){});
List<Qoate> result = response.getBody();
// Case 1
String response = restTemplate.getForObject(
"http://rest to get the list of Qoates",
String.class);
List<Qoate> result = objectMapper.readValue(response, new TypeReference<List<Qoate>>(){});
// Save the list into a database
if(Objects.nonNull(result)) result.stream().filter(Objects::nonNull).foreach(element -> quoteRepository.saveAndFlush(element));
}
}
Репозиторий:
public interface QuoteRepository extends JpaRepository<Quote,Long>{
}
Для информации:
По состоянию на 5.0,неблокирующий реактивный org.springframework.web.reactive.client.WebClient предлагает современную альтернативу RestTemplate с эффективной поддержкой как синхронизации, так и асинхронности, а также потоковых сценариев.RestTemplate будет объявлен устаревшим в будущей версии, и в нем больше не будут добавляться новые важные функции.
Для получения более подробной информации
Возможно, вам придется добавить к вашему appConfig.class
или mainClass
:
@EntityScan("paackage of your entity class")
@ComponentScan({"package of you service class","package of you controller class if you have it"})
@EnableJpaRepositories("package of your repository clas")
Наконец, я надеюсь, что это решит вашу потребность