コマンドの編成

シェルが多くの機能を提供し始めると、最終的には多くのコマンドが必要になり、ユーザーを混乱させる可能性があります。help と入力すると、アルファベット順に整理された困難なコマンドのリストが表示されます。これは、使用可能なコマンドを表示する最良の方法ではない場合があります。

この混乱の可能性を軽減するために、Spring Shell はコマンドをグループ化する機能を提供し、適切なデフォルトを設定します。関連するコマンドは同じグループ (たとえば、User Management Commands) にまとめられ、ヘルプ画面やその他の場所に一緒に表示されます。

デフォルトでは、コマンドは実装されているクラスに従ってグループ化され、camelCase クラス名が別々の単語に変換されます (つまり、URLRelatedCommands は URL Related Commands になります)。これは、同じ連携オブジェクトを使用する必要があるため、関連するコマンドがすでにクラス内にあることが多いため、適切なデフォルトです。

ただし、この動作が気に入らない場合は、次の方法でコマンドのグループをオーバーライドできます。優先順位は次のとおりです。

  1. @ShellMethod アノテーションで group() を指定します。

  2. コマンドが定義されているクラスに @ShellCommandGroup を配置します。これにより、そのクラスで定義されたすべてのコマンドにグループが適用されます (前述のようにオーバーライドされない限り)。

  3. コマンドが定義されているパッケージに ( package-info.java を介して) @ShellCommandGroup を配置します。これは、パッケージで定義されているすべてのコマンドに適用されます (前述のように、メソッドまたはクラスレベルでオーバーライドされない限り)。

次のリストに例を示します。

public class UserCommands {
    @ShellMethod(value = "This command ends up in the 'User Commands' group")
    public void foo() {}

    @ShellMethod(value = "This command ends up in the 'Other Commands' group",
    	group = "Other Commands")
    public void bar() {}
}

...

@ShellCommandGroup("Other Commands")
public class SomeCommands {
	@ShellMethod(value = "This one is in 'Other Commands'")
	public void wizz() {}

	@ShellMethod(value = "And this one is 'Yet Another Group'",
		group = "Yet Another Group")
	public void last() {}
}