執行
本節說明如何設定 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 的方法已被棄用,並將在未來版本中移除。 |