執行
本節描述如何設定 Spring Shell 以在互動模式下工作。
互動模式
版本 2.1.x 引入了對區分互動模式和非互動模式的內建支援。這使得在不需要定製的情況下,更容易將 shell 用作簡單的命令列工具。
目前,如果在從命令列啟動或執行 shell 時傳遞了任何命令列選項,則進入互動模式。當 shell 應用程式使用原生支援編譯時,此功能尤其適用。
某些命令在互動模式下執行或(反之)在非互動模式下執行時可能沒有任何有意義的用途。例如,內建的exit命令在非互動模式下將沒有意義,因為它用於退出互動模式。
@ShellMethod 註解有一個名為 interactionMode 的欄位,您可以使用它來告知 shell 何時可以使用特定命令。
Shell 執行器
ShellApplicationRunner 是一個主要介面,其中傳遞 Boot 的 ApplicationArguments,其預設實現決定使用哪個 ShellRunner。只能有一個 ShellApplicationRunner,但如果出於某種原因需要,可以重新定義它。
存在三種 ShellRunner 實現,分別命名為 InteractiveShellRunner、NonInteractiveShellRunner 和 ScriptShellRunner。預設情況下,只有 NonInteractiveShellRunner 啟用。啟用狀態可以使用屬性 spring.shell.interactive.enabled、spring.shell.noninteractive.enabled 和 spring.shell.script.enabled 分別修改。
例如,啟用互動式和指令碼執行器使用屬性
spring:
shell:
interactive:
enabled: true
script:
enabled: true
直到 3.2.x 版本,所有執行器都預設啟用;從 3.3.x 開始,預設只啟用 NonInteractiveShellRunner。 |
從 3.3.x 開始,ShellRunner 介面有一個新方法
default boolean run(String[] args) throws Exception {
return false;
}
這將是未來的主要 API,其他接受 Boot 的 ApplicationArguments 的現有方法已被棄用,並將在未來版本中移除。 |