執行

本節描述如何設定 Spring Shell 以在互動模式下工作。

互動模式

版本 2.1.x 引入了對區分互動模式和非互動模式的內建支援。這使得在不需要定製的情況下,更容易將 shell 用作簡單的命令列工具。

目前,如果在從命令列啟動或執行 shell 時傳遞了任何命令列選項,則進入互動模式。當 shell 應用程式使用原生支援編譯時,此功能尤其適用。

某些命令在互動模式下執行或(反之)在非互動模式下執行時可能沒有任何有意義的用途。例如,內建的exit命令在非互動模式下將沒有意義,因為它用於退出互動模式。

@ShellMethod 註解有一個名為 interactionMode 的欄位,您可以使用它來告知 shell 何時可以使用特定命令。

Shell 執行器

ShellApplicationRunner 是一個主要介面,其中傳遞 Boot 的 ApplicationArguments,其預設實現決定使用哪個 ShellRunner。只能有一個 ShellApplicationRunner,但如果出於某種原因需要,可以重新定義它。

存在三種 ShellRunner 實現,分別命名為 InteractiveShellRunnerNonInteractiveShellRunnerScriptShellRunner。預設情況下,只有 NonInteractiveShellRunner 啟用。啟用狀態可以使用屬性 spring.shell.interactive.enabledspring.shell.noninteractive.enabledspring.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 的現有方法已被棄用,並將在未來版本中移除。
© . This site is unofficial and not affiliated with VMware.