当SpringShell应用中命令过多时, 我们就需要对命令进行归类分组. SpringShell 提供了四种分组方式.
1. 命令分组方式
1.1 命令级别分组
声明命令时, 直接使用group属性指定命令所属组.
@ShellMethod(value = "计算两个整数的除法", group = "calculator")
public int div(int a, int b) {
return a/b;
}
1.2 类级别分组
命令所在类添加@ShellCommandGroup注解, 该注解只有一个属性就是组名.
@ShellComponent
@ShellCommandGroup("welcome")
public class WelcomeCommand {
}
1.3 包级别分组
在包下创建package-info.java 类
@org.springframework.shell.standard.ShellCommandGroup("package-cmds")
package org.zongf.learn.spring.shell.cmd;
1.4 默认分组
默认情况下, spring 会将所有命令所属组设置为命令所在类组中, 组名为"类名 Commands".
2. 命令分组优先级
命令优先级: 命令级别分组 > 类级别分组 > 包级别分组 > 默认分组.
- 若声明命令时使用group属性设置了分组, 那么命令分组为group属性指定的组.
- 否则, 若命令所在类使用@ShellCommandGroup设置了类分组, 那么命令分组为该类定义的分组
- 否则, 若该命令所在包使用@ShellCommandGroup设置了包分组, 那么命令分组为该包定义的分组
- 否则, 该命令使用默认分组
网友评论