我正在使用Java Spring构建一个应用程序,我想在我的应用程序开始处理请求之前运行一些环境设置代码。在此特定示例中,我使用的是PayPal Rest SDK,并且我想为我的应用程序设置一些通知webhook。出于明显的原因,我不想在应用程序启动后调用端点来设置webhooks,因此将其放入控制器中可能不是一个好主意,因此我需要一些Spring配置信息来进行设置我不能把它放在main()中。我同意(实际上,我甚至更希望)如果无法创建webhooks(如果需要考虑的约束)导致应用程序崩溃。
执行此操作的好方法是什么?
谢谢。
答案 0 :(得分:0)
并且我需要一些Spring配置信息来进行设置,因此无法将其放在main()
以上说法不正确。您可以在主目录中访问Spring配置。请考虑以下示例。
@SpringBootApplication
public class Main {
@Autowire
private MyService service;
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(InterviewHqApplication.class, args);
ctx.getBean(Main.class).setup();
}
private void setup() {
service.doStuff();
}
}
在此示例中,在加载应用程序上下文之后调用setup()
方法。
实际上,有几种方法可以完成您尝试做的事情。 Spring Boot还支持使用ApplicationRunner和CommandLineRunner,它们在加载应用程序上下文之后都调用run方法,这是我上面显示的替代方法。您还可以侦听ApplicationReadyEvent
,并且可以调用@PostConstruct
在初始化bean之后对bean执行一些特定的配置。