従来のアノテーション

標準 API を使用すると、Bean のメソッドは実行可能なコマンドに変換されます。

  • Bean クラスには @ShellComponent アノテーションが付いています。(これは、考慮される Bean のセットを制限するために使用されます。)

  • このメソッドには @ShellMethod アノテーションが付いています。

@ShellComponent は、それ自体が @Component でメタアノテーションが付けられたステレオタイプアノテーションです。その結果、フィルタリングメカニズムに加えてこれを使用して Bean を宣言できます (たとえば、@ComponentScan を使用)。

アノテーションの value 属性を使用して、作成された Bean の名前をカスタマイズできます。

@ShellComponent
static class MyCommands {

	@ShellMethod
	public void mycommand() {
	}
}

@ShellMethod アノテーションの唯一の必須属性は value 属性です。これには、コマンドが何を行うかを 1 文で短く説明する必要があります。これにより、ユーザーはシェルを離れることなく、コマンドに関する一貫したヘルプを得ることができます ( ヘルプを参照)。

コマンドの説明は短くする必要があります。1 つか 2 つの文を超えないようにしてください。一貫性を高めるために、大文字で始まり、ピリオドで終わる必要があります。

デフォルトでは、コマンドのキー (つまり、シェルでコマンドを呼び出すために使用する単語) を指定する必要はありません。メソッドの名前がコマンドキーとして使用され、camelCase の名前がダッシュ付きの GNU スタイルの名前に変換されます (たとえば、sayHello() は say-hello になります)。

ただし、アノテーションの key 属性を使用して、コマンドキーを明示的に設定できます。

@ShellMethod(value = "Add numbers.", key = "sum")
public int add(int a, int b) {
	return a + b;
}
key 属性は、複数の値を受け入れます。1 つのメソッドに複数のキーを設定すると、コマンドはそれらの異なるエイリアスで登録されます。
コマンドキーには、スペースを含むほとんどすべての文字を含めることができます。ただし、名前を考え出すときは、一貫性がユーザーに高く評価されることが多いことに注意してください。つまり、破線の名前と空白の名前やその他の不一致を混在させないようにする必要があります。