Spring Shell基于注解定义命令
当使用标准API时,bean上的方法将变为可执行命令,前提是:
- bean类带有@ShellComponent注释,@ShellComponent是一个原型注释,本身用@Component进行标注,因此除了过滤机制外,你还可以使用它来声明bean,并且通过注释的value属性定义bean的名称。
- 该方法带有@ShellMethod注释。
@ShellComponent
public class MyCommand {
@ShellMethod
public void mycommand() {
System.out.println("---");
}
@ShellMethod(value = "Add numbers.", key = {"sum", "add"}, prefix = "--")
public int add(int a, int b) {
return a + b;
}
}
@ShellMethod的value属性指定对命令的描述,可以通过help命令查看命令的使用方法:
shell:>help
AVAILABLE COMMANDS
Built-In Commands
help: Display help about available commands
stacktrace: Display the full stacktrace of the last error.
clear: Clear the shell screen.
quit, exit: Exit the shell.
history: Display or save the history of previously run commands
version: Show version info
script: Read and execute commands from a file.
Demo Application
hi:
My Command
mycommand:
sum, add: Add numbers.
二、分组group
默认情况下,命令根据其实现的类进行分组,将驼峰类名转换为单独的单词。可以通过如下方式指定分组(优先级按照说明顺序)
- 在@ShellMethod注解上指定group属性;
- 在定义命令的类上防止一个@ShellCommandGroup,这将改组应用于该类中定义的所有命令(除非如前所属被覆盖);
- 在定义命令的包上防止一个@ShellCommandGroup(通过package-info.java),这适用于包中定义的所有命令(除非在方法或类级别重写,如前所述)
开源SDK:https://github.com/mingyang66/spring-parent