実行
このセクションでは、インタラクティブモードで動作するように Spring Shell をセットアップする方法について説明します。
インタラクションモード
バージョン 2.1.x では、対話モードと非対話モードを区別する組み込みサポートが導入されました。これにより、カスタマイズを必要とせずにシェルを単純なコマンドラインツールとして簡単に使用できます。
現在、コマンドラインからシェルを起動または実行するときにコマンドラインオプションが渡されると、対話モードに入ります。これは、シェルアプリケーションがネイティブサポートでコンパイルされている場合に特にうまく機能します。
一部のコマンドは、対話モードで実行したり、(逆に) 非対話モードで実行したりすると、有用な意味を持たない場合があります。例: 組み込みの exit
コマンドは、対話モードを終了するために使用されるため、非対話モードでは意味がありません。
@ShellMethod
アノテーションには interactionMode
と呼ばれるフィールドがあり、特定のコマンドがいつ使用可能になるかをシェルに通知するために使用できます。
シェルランナー
ShellApplicationRunner
は、Boot の ApplicationArguments
が渡されるメインインターフェースであり、そのデフォルトの実装によって、どの ShellRunner
を使用するかが選択されます。ShellApplicationRunner
は 1 つしか存在できませんが、何らかの理由で必要に応じて再定義できます。
ShellRunner
実装は 3 つ存在し、それぞれ 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 を使用する他の既存のメソッドは非推奨となり、将来削除される予定です。 |