我正在开发一个 Spring Shell 2 CLI,我试图在运行时通过反射从定义的接口生成命令。
更新:接口的实现也是在运行时生成的。
我正在使用 ConfigurableCommandRegistry 和 MethodTarget 来注册我的命令。
有没有办法在运行时为传递给 MethodTarget 的方法的参数设置/注册转换器?
这样做的最佳方法是什么?
我对 java 和 spring 很陌生,我不确定这是否可能。请记住这一点,请不要杀了我 :)文档
的扩展 Spring Shell丢失(不完整?)
我已经检查了Spring shell 项目,但找不到可以使用的东西。
也许这可以通过参数解析来实现?或在运行时使用 FormatterRegistrar 生成转换器?
注册命令如下
MethodTarget command = new MethodTarget(method, client, new Command.Help(description, group), availabilityIndicator);
registry.register(commandName, command);
方法和方法参数、客户端、描述、组是通过接口的反射检索的。
我想在运行时从接口生成命令
public interface MessagingManagement {
@ShellMethod(...)
public void createPerson(@ShellOption(...)Person person);
}
可以使用以下参数调用 create-person --person name age (或更多参数)
简而言之,我想为复杂对象的参数生成转换器并将它们展平。
嵌套对象被忽略