本节介绍如何将 Spring Shell 设置为在交互模式下工作。

交互模式

版本 2.1.x 引入了内置支持,以区分交互式 和非交互模式。这样可以更轻松地将 shell 用作 简单的命令行工具,无需自定义。

目前,如果在启动时传递任何命令行选项,则进入交互模式 或从命令行运行 shell。这在 shell 应用程序时尤其有效 是使用本机支持编译的。

某些命令在交互模式下运行时可能没有任何有用的含义 或(相反)在非交互模式下。例如,内置命令将 在非交互模式下没有意义,因为它是用来退出交互模式的。exit

批注有一个名为的字段,您可以使用该字段来通知 shell 关于特定命令何时可用。@ShellMethodinteractionMode

壳牌流道

ShellApplicationRunner是传递 Boot 的主接口 它的默认实现会做出一个选择。可以有 只有一个,但如果出于某种原因需要,可以重新定义它。ApplicationArgumentsShellRunnerShellApplicationRunner

存在三个实现,分别命名为 和 。默认情况下,Only 处于启用状态。可以使用属性 和 respecively 修改启用状态。ShellRunnerInteractiveShellRunnerNonInteractiveShellRunnerScriptShellRunnerNonInteractiveShellRunnerspring.shell.interactive.enabledspring.shell.noninteractive.enabledspring.shell.script.enabled

例如,启用交互式和脚本运行器使用属性:

spring:
  shell:
    interactive:
      enabled: true
    script:
      enabled: true
默认情况下启用了所有运行器的版本,默认情况下启用从 only 开始。3.2.x3.3.xNonInteractiveShellRunner

从接口开始有一种新的方法:3.3.xShellRunner

default boolean run(String[] args) throws Exception {
  return false;
}
这将是今后的主要 api,其他现有引导方法已被弃用,将来将被删除。ApplicationArguments
默认情况下启用了所有运行器的版本,默认情况下启用从 only 开始。3.2.x3.3.xNonInteractiveShellRunner
这将是今后的主要 api,其他现有引导方法已被弃用,将来将被删除。ApplicationArguments