Legacy Annotation

当你使用标准 API 时,bean 中的方法会作为可执行的命令,前提是:

  • 该 bean 类带有 `@ShellComponent`注释。(这用于限制被认为的 bean 集合。)

  • 该方法带有 `@ShellMethod`注释。

@ShellComponent 是一种本身元注解为 @Component 的构造型注解。因此,你除了使用筛选机制之外,也可以用它来声明 bean(例如通过使用 @ComponentScan)。 你可以使用注解的 value 属性来自定义已创建 bean 的名称。

Unresolved include directive in modules/ROOT/pages/commands/registration/legacyannotation.adoc - include::../../test/java/org/springframework/shell/docs/AnnotationRegistrationSnippets.java[]

@ShellMethod 注解的唯一必需属性是其 value 属性,它应该对命令做什么有一个简短的、一句话的描述。这使得您的用户可以在不离开 shell 的情况下获得关于您命令的一致帮助(请参阅 Help )。

你的命令描述应简短——不超过一两句话。为达到更好的连贯性,它应以大写字母开头,以句号结尾。

默认情况下,你不需要为你的命令指定键(也就是说,shell 中用来调用该命令的单词)。方法名称用作命令键,将驼峰式名称转换为带短划线的 GNU 风格名称(例如 sayHello() 变为 say-hello)。

但是,你可以使用注解的 key 属性来明确设置命令键:

Unresolved include directive in modules/ROOT/pages/commands/registration/legacyannotation.adoc - include::../../test/java/org/springframework/shell/docs/AnnotationRegistrationSnippets.java[]

key 属性接受多个值。如果你为一个方法设置多个键,该命令将使用这些不同的别名注册。

命令键可以包含几乎任何字符,包括空格。然而在想名称时,请记住一致性经常会受到用户青睐。即,你应避免将破折号名称与空格名称混合使用,以及其他不一致。