命名
如果需要修改选项长名称,可以使用 OptionNameModifier
接口完成,这是一个简单的 Function<String, String>
。在此接口中,原始选项名作为输入,修改后的名称作为输出。
修饰符可以在 CommandRegistration
中按 OptionSpec
定义,或通过全局 Bean 或配置属性设置为默认。在 OptionSpec
中手动定义的修饰符优先于全局定义的修饰符。默认情况下未定义全局修饰符。
可以在 CommandRegistration
中为选项定义一个修饰符。
CommandRegistration.builder()
.withOption()
.longNames("arg1")
.nameModifier(name -> "x" + name)
.and()
.build();
添加一个类型为 OptionNameModifier
的*单例 Bean*,它将成为全局默认修饰符。
@Bean
OptionNameModifier sampleOptionNameModifier() {
return name -> "x" + name;
}
也可以仅添加配置属性 spring.shell.option.naming.case-type
,它会根据定义的类型自动配置一个修饰符。
noop
表示不进行任何操作,camel
、snake
、kebab
、pascal
分别激活内置的 camelCase
、snake_case
、kebab-case
或 PascalCase
修饰符。
如果直接创建 CommandRegistration Bean,通过配置属性设置的全局默认修饰符仅在使用预配置的 Builder 实例时有效。详情请参阅 [using-shell-commands-programmaticmodel]。 |
spring:
shell:
option:
naming:
case-type: noop
# case-type: camel
# case-type: snake
# case-type: kebab
# case-type: pascal
例如,像这样在一个带注解的方法中定义的选项。
@ShellMethod(key = "option-naming-sample")
public void optionNamingSample(
@ShellOption("from_snake") String snake,
@ShellOption("fromCamel") String camel,
@ShellOption("from-kebab") String kebab,
@ShellOption("FromPascal") String pascal
) {}
默认情况下,该命令的帮助会直接显示来自 @ShellOption
的名称。
OPTIONS
--from_snake String
[Mandatory]
--fromCamel String
[Mandatory]
--from-kebab String
[Mandatory]
--FromPascal String
[Mandatory]
定义 spring.shell.option.naming.case-type=kebab
,会添加默认修饰符,然后选项名称看起来像这样。
OPTIONS
--from-snake String
[Mandatory]
--from-camel String
[Mandatory]
--from-kebab String
[Mandatory]
--from-pascal String
[Mandatory]