傳統註解

使用標準 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 屬性接受多個值。如果你為一個方法設定多個鍵,該命令將使用這些不同的別名進行註冊。
命令鍵可以包含幾乎任何字元,包括空格。然而,在命名時,請記住使用者通常喜歡一致性。也就是說,你應該避免混合使用帶連字元的名稱和帶空格的名稱以及其他不一致的情況。