目前,我試圖使用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)
謝謝菲爾韋伯! –