找不到命令
預設情況下,遺失的命令會透過 CommandNotFoundResultHandler
處理並輸出簡單訊息
shell:>missing
No command found for 'missing'
在內部,CommandNotFoundResultHandler
使用 CommandNotFoundMessageProvider
,這是一個簡單的函式,接收 ProviderContext
並傳回文字訊息。以下是一個自訂訊息提供者的範例。
class CustomProvider implements CommandNotFoundMessageProvider {
@Override
public String apply(ProviderContext context) {
// parsed commands without options
List<String> commands = context.commands();
// actual error, usually CommandNotFound exception
Throwable error = context.error();
// access to registrations at this time
Map<String, CommandRegistration> registrations = context.registrations();
// raw text input from a user
String text = context.text();
return "My custom message";
}
}
可以透過將其定義為 bean 來變更此實作。
@Bean
CommandNotFoundMessageProvider provider1() {
return new CustomProvider();
}
CommandNotFoundResultHandler
是一個函數介面,因此可以寫成 lambda。
@Bean
CommandNotFoundMessageProvider provider2() {
return ctx -> "My custom message";
}