传统注解

当您使用标准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属性接受多个值。如果为单个方法设置多个键,则该命令将使用这些不同的别名注册。
命令键几乎可以包含任何字符,包括空格。但是,在想出名称时,请记住用户通常会欣赏一致性。也就是说,您应该避免将带短划线的名称与带空格的名称和其他不一致之处混合使用。