目前,我试图使用CommandLineRunner
以及ConfigurableApplicationContext
作为默认Web应用程序运行一个弹簧启动应用程序,并作为一个独立的命令行应用程序按需(通过某种类型的命令行参数)运行。当我提供程序参数时,我正在努力找出如何单独运行这个控制台应用程序。请任何建议将有所帮助。如何运行弹簧启动应用程序作为Web应用程序以及命令行应用程序?
2
A
回答
1
的CommandLineRunner
接口提供,一旦应用程序已启动拿起命令行参数的有效方法,但它不会有助于改变应用程序的性质。正如您可能已经发现的,应用程序可能不会退出,因为它认为它需要处理传入的Web请求。
您在主要方法中采取的方法对我来说看起来很明智。你需要告诉Spring Boot它不是一个Web应用程序,因此它不应该在启动后监听传入的请求。
我会做这样的事:
public static void main(String[] args) {
SpringApplication application = new SpringApplication(AutoDbServiceApplication.class);
application.setWeb(ObjectUtils.isEmpty(args);
application.run(args);
}
这应该开始在正确的模式应用。然后,您可以像现在一样使用CommandLineRunner
bean。你可能也想看看ApplicationRunner
其中有一个稍微好一点的API:
@Component
public class AutoDbApplicationRunner implements ApplicationRunner {
public void run(ApplicationArguments args) {
if (ObjectUtils.isEmpty(args.getSourceArgs)) {
return; // Regular web application
}
// Do something with the args.
if (args.containsOption(“foo”)) {
// …
}
}
}
如果你真的不想AutoDbApplicationRunner
豆,甚至可以创建你可以看看在main方法中设置的配置文件,你可以稍后再使用(请参阅SpringApplication.setAdditionalProfiles
)。
相关问题
- 1. 弹簧集成 - 在应用程序启动时运行流程
- 2. Java应用程序命令行启动
- 3. 从命令行启动应用程序
- 4. 如何从Web应用程序运行命令行进程?
- 5. 将Windows应用程序作为命令行应用程序运行
- 6. 自动启动弹簧应用程序
- 7. 多弹簧启动应用程序
- 8. Camelize弹簧启动应用程序
- 9. 如何通过命令行将应用程序作为守护程序启动?
- 10. JNLP/Java Web Start可以启动命令行应用程序
- 11. 运行弹簧启动应用程序时编译错误
- 12. 无法运行弹簧启动应用程序mappingjackson2httpmessageconverter错误
- 13. 应用程序启动时应用程序类不运行?
- 14. 绑定运行框命令以启动应用程序
- 15. Supervisord-在启动应用程序/程序之前执行命令
- 16. 如何从命令行运行Google Web Toolkit应用程序?
- 17. 无法使用命令行参数来启动弹簧引导应用程序
- 18. 如何从Java Web应用程序启动Android应用程序?
- 19. 如何从Web应用程序启动WinRT应用程序?
- 20. 从命令行运行应用程序并启动浏览器
- 21. 春季启动应用程序时,挂在命令行运行
- 22. 弹簧启动web启动器应用程序显示错误
- 23. 的Web应用程序框架调用命令行程序
- 24. 作为Web应用程序在Web服务器上运行Java应用程序?
- 25. 作为控制台应用程序运行Asp.net应用程序
- 26. 将MVC应用程序作为独立应用程序运行
- 27. 作为子应用程序运行MVC应用程序?
- 28. 在Web应用程序中运行代码的命令行实用程序
- 29. 使用命令启动应用程序
- 30. FIREMONKEY - 运行启动程序启动应用程序(OSX)
谢谢菲尔韦伯! –