首页 > 解决方案 > Java Spring - 如何设置环境?

问题描述

我正在使用 Java Spring 构建一个应用程序,我想在我的应用程序开始处理请求之前运行一些环境设置代码。在这个特定的示例中,我使用的是 PayPal Rest SDK,并且我想为我的应用程序设置一些通知 webhook。出于显而易见的原因,我不想在应用程序启动后调用端点来设置 webhook,所以将它放在我的控制器中可能不是一个好主意,我需要一些 Spring 配置信息来设置它所以我不能把它放在 main() 中。如果无法创建 webhook,我可以(实际上我什至更喜欢)应用程序崩溃,如果这是一个需要考虑的约束。

有什么好方法可以做到这一点?

谢谢。

标签: javaspringspring-bootpaypal-rest-sdk

解决方案


我需要一些 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 还支持使用ApplicationRunnerCommandLineRunner,它们都在加载应用程序上下文后调用 run 方法,这是我上面显示的替代方法。你也可以监听一个ApplicationReadyEvent并且你可以调用@PostConstructdo 在一个 bean 被初始化之后执行一些特定的配置。


推荐阅读