執行
本節描述瞭如何設定 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 的現有方法已被棄用,並將在未來移除。 |