傳統註解

當您使用標準 API 時,只要符合以下條件,bean 上的方法就會轉換為可執行的命令:

  • bean 類別帶有 @ShellComponent 註解。(這用於限制考量的 bean 集合。)

  • 方法帶有 @ShellMethod 註解。

@ShellComponent 是一個原型註解,本身使用 @Component 進行元註解。因此,您可以將它與篩選機制結合使用來宣告 bean(例如,透過使用 @ComponentScan)。

您可以使用註解的 value 屬性來自訂建立的 bean 名稱。

@ShellComponent
static class MyCommands {

	@ShellMethod
	public void mycommand() {
	}
}

@ShellMethod 註解唯一需要的屬性是其 value 屬性,該屬性應包含對命令功能的簡短一句描述。這讓您的使用者無需離開 shell 即可獲得關於您的命令的一致性說明(請參閱說明)。

您的命令描述應簡短——不超過一或兩句話。為了更好的一致性,它應該以大寫字母開頭,並以句點結尾。

預設情況下,您無需指定命令的鍵(也就是,在 shell 中用於調用它的單字)。方法名稱會被用作命令鍵,並將 camelCase 名稱轉換為破折號、gnu 風格的名稱(例如,sayHello() 變成 say-hello)。

但是,您可以使用註解的 key 屬性來明確設定命令鍵

@ShellMethod(value = "Add numbers.", key = "sum")
public int add(int a, int b) {
	return a + b;
}
key 屬性接受多個值。如果您為單一方法設定多個鍵,則該命令會使用這些不同的別名進行註冊。
命令鍵可以包含幾乎任何字元,包括空格。不過,在想出名稱時,請記住使用者通常會欣賞一致性。也就是說,您應該避免將破折號名稱與空格名稱和其他不一致之處混合使用。