Я хотел бы реализовать функцию динамического плагина в приложении Java. В идеале:
- Приложение будет определять интерфейс
Plugin
с помощью метода типаgetCapabilities()
. - Плагин будет JAR
pluginX.jar
, содержащий классPluginXImpl
, реализующийPlugin
(и, возможно, некоторые другие). - Пользователь помещает
pluginX.jar
в специальный каталог или задает для него параметр конфигурации. Пользователь не обязательно должен включатьpluginX.jar
в свой путь к классам. - Приложение найдет
PluginXImpl
(возможно, через манифест JAR, возможно, путем отражения) и добавьте его в реестр. - Клиент может получить экземпляр
PluginXImpl
, например, путем вызова метода типаgetPluginWithCapabilities("X")
. Пользователь не обязательно должен знать имя плагина.
У меня есть смысл, я должен сделать это с помощью peaberry, но я не могу понять документация. Я потратил некоторое время на изучение Guice, поэтому мой предпочтительный ответ не будет "использовать Spring Динамические модули.
Может ли кто-нибудь дать мне простое представление о том, как это сделать, используя Guice/peaberry, OSGi или просто Java?