命名
如果需要修改選項長名稱,可以使用 OptionNameModifier
介面,這是一個簡單的 Function<String, String>
。在這個介面中,原始選項名稱輸入,修改後的名稱輸出。
修改器可以針對 CommandRegistration
中的每個 OptionSpec
定義,預設為全域 bean 或透過組態屬性定義。在 OptionSpec
中手動定義的修改器優先於全域定義的修改器。預設情況下未定義全域修改器。
您可以使用 CommandRegistration
中的選項定義一個。
CommandRegistration.builder()
.withOption()
.longNames("arg1")
.nameModifier(name -> "x" + name)
.and()
.build();
新增一個 單例 bean 作為 OptionNameModifier
類型,這將成為全域預設值。
@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
) {}
預設情況下,該指令的 help
顯示直接來自 @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]