You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Shell 3.0.0中实现子命令(多级命令)功能?

在Spring Shell 3.0.0中实现子命令结构

完全可以实现你想要的子命令结构,核心是通过@ShellMethod的key属性定义命令层级,每个子命令作为独立方法存在,保留各自的参数、帮助文本和配置。下面是具体实现方式:

1. 定义子命令方法

为每个子命令单独创建方法,在@ShellMethod的key属性中用空格分隔顶级命令和子命令,比如"foo list"、"foo describe"。这样Spring Shell会自动识别命令层级。

示例代码:

import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
import org.springframework.shell.standard.ShellOption;
import org.springframework.shell.availability.Availability;
import org.springframework.shell.standard.ShellMethodAvailability;

@ShellComponent
public class FooCommands {

    @ShellMethod(key = "foo list", value = "列出所有Foo实例")
    public String listFoos() {
        return "已找到Foo实例:Foo1、Foo2、Foo3";
    }

    @ShellMethod(key = "foo describe", value = "查看指定Foo的详细信息")
    public String describeFoo(@ShellOption(help = "要查询的Foo ID") String fooId) {
        return String.format("Foo ID: %s\n描述:示例Foo详情内容", fooId);
    }

    // 为子命令配置可用性控制(示例)
    @ShellMethodAvailability("describeFoo")
    public Availability describeFooAvailability() {
        // 这里可以添加自定义的可用性判断逻辑
        return Availability.available();
    }
}
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;

@ShellComponent
public class BarCommands {

    @ShellMethod(key = "bar list", value = "列出所有Bar实例")
    public String listBars() {
        return "已找到Bar实例:BarA、BarB、BarC";
    }
}

2. 验证效果

按上述配置后,就能实现你想要的交互效果:

  • 输入foo,Shell会自动展示该顶级命令下的所有子命令:
    Available commands under 'foo':
      foo describe - 查看指定Foo的详细信息
      foo list - 列出所有Foo实例
    
  • 输入help foo,会展示所有foo子命令的完整帮助,包括参数说明和可用性配置;
  • 输入foo describe XYZ,会直接调用对应的方法并返回结果;
  • 每个子命令独立配置@ShellOption、@ShellMethodAvailability等注解,完全保留专属的参数规则和行为控制。

3. 补充说明

  • 不需要额外创建接收子命令参数的顶级foo/bar方法,Spring Shell会自动识别以foo 开头的命令组,处理子命令列表展示逻辑;
  • 可以配合@ShellCommandGroup注解为命令分组添加更友好的分类名称,但这仅优化帮助文本的展示,不影响子命令的层级结构。

内容的提问来源于stack exchange,提问作者anarchitect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:55:16