Execution

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

Interaction Mode

版本 2.1.x 引入了内置支持,用于区分交互式模式与非交互式模式。这使得在不需定制的情况下,更方便地将 Shell 作为简单的命令行工具使用。

如果在从命令行中启动或运行 Shell 时传递了任何命令行选项,当前将进入交互模式。当用 Native Support 编译 Shell 应用程序时,此操作尤为有效。

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

@ShellMethod 注释有一个称为 interactionMode 的字段,你可以用它告诉 Shell 何时某个特定的命令可用。

Shell Runners

ShellApplicationRunner 是一个主界面,Boot 的 ApplicationArguments 将传递给它,它的默认实现会选择使用哪个 ShellRunner。只能有一个 ShellApplicationRunner,但如果出于某种原因需要重新定义它,则可以重新定义它。

存在三个 ShellRunner 实现,它们分别名为 InteractiveShellRunnerNonInteractiveShellRunnerScriptShellRunner。默认情况下,它们已启用,但如果需要的话,可以使用属性 spring.shell.interactive.enabledspring.shell.noninteractive.enabledspring.shell.script.enabled 禁用它们。