传统注解

使用标准 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 属性接受多个值。如果你为一个方法设置多个键,该命令将使用这些不同的别名进行注册。
命令键可以包含几乎任何字符,包括空格。然而,在命名时,请记住用户通常喜欢一致性。也就是说,你应该避免混合使用带连字符的名称和带空格的名称以及其他不一致的情况。