java - Java Spring - 如何设置环境?
问题描述
我正在使用 Java Spring 构建一个应用程序,我想在我的应用程序开始处理请求之前运行一些环境设置代码。在这个特定的示例中,我使用的是 PayPal Rest SDK,并且我想为我的应用程序设置一些通知 webhook。出于显而易见的原因,我不想在应用程序启动后调用端点来设置 webhook,所以将它放在我的控制器中可能不是一个好主意,我需要一些 Spring 配置信息来设置它所以我不能把它放在 main() 中。如果无法创建 webhook,我可以(实际上我什至更喜欢)应用程序崩溃,如果这是一个需要考虑的约束。
有什么好方法可以做到这一点?
谢谢。
解决方案
我需要一些 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
do 在一个 bean 被初始化之后执行一些特定的配置。
推荐阅读
- angular - Web 组件中的 ng-content 有什么问题?
- python - Sphinx meth 角色不创建链接
- html - 登录字段为空时如何不更改页面
- google-apps-script - 从谷歌脚本返回大数组很慢
- reactjs - 添加验证表项
- c++ - Instrumentation:融合 gcov / ASan 还是拆分成独立的构建(+ 后续测试)?
- php - 使用 pluck 和字符串值 laravel 比较模型中的值
- excel - 如何根据条件显示文本?
- reactjs - 我想将我的 NEXT.js 项目与静态网站链接
- python - 将3个或更多相似词合并为一个词python