Я работаю над интерфейсом командной строки Spring Shell 2 и пытаюсь генерировать команды во время выполнения из определенного интерфейса посредством отражения.
Обновление: реализация интерфейса также создается во время выполнения.
Я использую ConfigurableCommandRegistry и MethodTarget для регистрации своей команды.
Есть ли способ настроить/зарегистрировать преобразователи? во время выполнения для параметров метода, который передается в MethodTarget?
Как лучше всего это сделать?
Я новичок в java и spring, и я не уверен, что это вообще возможно. Имейте это в виду и, пожалуйста, не убивайте меня :)
The Extending 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 (или больше параметров)
Короче говоря, я хотел бы создать преобразователи для параметров, которые являются сложными объектами, и сгладить их.
Вложенные объекты игнорируются.