组织命令
当您的 Shell 开始提供大量功能时,您可能会遇到大量命令,这可能会让用户感到困惑。通过输入 help
,他们会看到一个令人望而却步的命令列表,按字母顺序排列,这可能并非总是显示可用命令的最佳方式。
为了减轻这种可能的困惑,Spring Shell 提供了将命令组合在一起的功能,并提供了合理的默认值。相关的命令将分组在一起(例如,用户管理命令
),并在帮助屏幕和其他地方一起显示。
默认情况下,命令根据其实现的类进行分组,将驼峰式命名的类名转换为独立的单词(例如,URLRelatedCommands
变为 URL Related Commands
)。这是一个合理的默认行为,因为相关命令通常已经在同一个类中,因为它们需要使用相同的协作对象。
但是,如果此行为不适合您,可以按以下优先级顺序覆盖命令的分组:
-
在
@ShellMethod
注解中指定group()
。 -
在定义命令的类上放置
@ShellCommandGroup
。这将应用于该类中定义的所有命令(除非被覆盖,如前所述)。 -
在定义命令的包上(通过
package-info.java
)放置@ShellCommandGroup
。这将应用于包中定义的所有命令(除非在方法或类级别被覆盖,如前所述)。
以下列表显示了一个示例
public class UserCommands {
@ShellMethod(value = "This command ends up in the 'User Commands' group")
public void foo() {}
@ShellMethod(value = "This command ends up in the 'Other Commands' group",
group = "Other Commands")
public void bar() {}
}
...
@ShellCommandGroup("Other Commands")
public class SomeCommands {
@ShellMethod(value = "This one is in 'Other Commands'")
public void wizz() {}
@ShellMethod(value = "And this one is 'Yet Another Group'",
group = "Yet Another Group")
public void last() {}
}