Проект

Общее

Профиль

RestTemplate

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.concurrent.CompletableFuture;

@Component
public class AppRunner implements CommandLineRunner {

    private static final Logger log = LoggerFactory.getLogger(AppRunner.class);
    private final GitHubLookupService gitHubLookupService;

    public AppRunner(GitHubLookupService gitHubLookupService) {
        this.gitHubLookupService = gitHubLookupService;
    }

    @Override
    public void run(String... args) {
        // Start the clock
        long start = System.currentTimeMillis();

        try {
            // Kick of multiple, asynchronous lookups
            CompletableFuture<GithubUser> page1 = gitHubLookupService.findUser("PivotalSoftware");
            CompletableFuture<GithubUser> page2 = gitHubLookupService.findUser("CloudFoundry");
            CompletableFuture<GithubUser> page3 = gitHubLookupService.findUser("Spring-Projects");

            // Wait until they are all done
            CompletableFuture.allOf(page1, page2, page3).join();

            // Print results, including elapsed time
            log.info("Elapsed time: " + (System.currentTimeMillis() - start));
            log.info("--> " + page1.get());
            log.info("--> " + page2.get());
            log.info("--> " + page3.get());
        } catch (Exception e) {
            log.error("ERROR: {}", e.getMessage());
        }

    }

}