Подключаемое Java-приложение. Как потребитель загружает интерфейс? - PullRequest
0 голосов
/ 19 января 2019

Я создаю небольшое хобби-приложение для задач / задач Java.Я хочу иметь возможность писать плагины для него, которые будут храниться в каталоге где-то, вероятно, в каталоге plugins рядом с myapplication.jar.

У меня есть некоторая идея о том, как загрузить эти плагины, и я хочу написать интерфейсы, которые может использовать создатель плагина, например SomeActionInterface, когда он реализован, позволяет плагину добавлять функциональность к SomeAction.

Мой вопрос: куда же девается SomeActionInterface,и как создатель плагина получит доступ к указанному интерфейсу?

Идет ли интерфейс в главном myapplication.jar, который пользователь должен был загрузить в свой путь к классам, или в отдельном myapplication-plugininterfaces.jar?

1 Ответ

0 голосов
/ 19 января 2019

Обычно вы предоставляете SPI и API , которые авторы плагинов могут использовать для реализации своего кода. Обычно эти классы упакованы как отдельный JAR, это позволяет иметь минимальную зависимость для создания плагина.

Есть несколько хороших примеров архитектуры плагинов, которые вы можете изучить:

  • JDBC предоставляет java.sql.Connection и связывает классы, чтобы проекты баз данных могли реализовывать драйверы для Java.

  • SLF4J обрабатывает новые привязки каркаса логгера как плагины. Существует slf4-api и slf4j-ext зависимостей , которые используются для реализации плагина.

...