如何阻止Spring Shell 2.x中无开关时自动分配参数?
Spring Shell 2.x 禁止参数自动位置分配的方法
要阻止参数被自动按位置分配,强制用户必须通过命名开关(如--name)传递参数,只需给@ShellOption添加mode = ShellOption.Mode.REQUIRED配置即可。
修改后的命令代码:
@ShellMethod public void greet(@ShellOption(mode = ShellOption.Mode.REQUIRED) String name){ System.out.println(String.format("Hello %s", name)); }
配置后效果:
- 仅当输入
greet --name Bakir时命令正常执行 - 直接输入
greet Bakir会触发明确的错误提示,告知必须指定--name选项
如果是多参数场景,给每个参数的@ShellOption都加上该配置,就能彻底避免用户因位置输入错误导致的静默问题,系统会直接提示缺失对应命名选项,而非隐式分配错误的参数值。
内容的提问来源于stack exchange,提问作者kvs
相关产品推荐
相关产品推荐

