在 spring-boot 启动时调用服务的最佳方式是什么?

What's the best way to Invoke a service on spring-boot start up?

我有一个 spring 引导应用程序,我需要在启动时调用一个服务(休息端点)。

CommandLineRunner

@Component
public class MyBean implements CommandLineRunner {

    public void run(String... args) {
        // Do something...
    }

}

您可以使用这个方便的界面在应用程序启动时执行任何您喜欢的任务。

要调用 REST 端点,您可以使用 RestTemplate

RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject("http://www.example.com/api/resource", String.class);

如果您使用匹配 JSON 响应的字段构建 POJO,RestTemplate 将在 Jackson 的帮助下自动映射它们。有关详细信息,请参阅文档。

我建议看一下 @PostConstruct 注释。

我会使用和实施 ApplicationRunner

您还可以将您的应用挂接到 ApplicationReadyEvent 或 Spring 触发的其他事件:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html#boot-features-application-events-and-listeners