требовать все пространства имен по префиксу - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть приложение, которое можно расширить с помощью вызовов defmethod.Приложение должно быть расширено во время выполнения путем добавления новых пространств имен в classpath, которые содержат дополнительные вызовы defmethod.

Я ищу решение для внедрения зависимостей.Вопрос заключается в следующем: как мое приложение узнает, какие пространства имен оно должно require, чтобы могли defmethod вызовы вступать в силу?

  1. Одним из решений является наличие файла центральной конфигурации, который содержитимена пространств имен, которые могут потребоваться.Недостатком является то, что мне нужно редактировать конфигурации вручную, когда я хочу включить плагин.

  2. Другой способ - каким-то образом динамически сканировать путь к классам для поиска дополнительных пространств имен и требовать их на основепредикат (например, префикс namespce name).

Я нашел только эти два решения, но мне интересно, какие еще могут быть способы внедрения зависимости во время выполнения в Clojure.А какие библиотеки обычно используются для этой цели?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 ноября 2018

На земле Clojure обычно используются 3 среды внедрения зависимостей:

Из них, Integrant, вероятно, лучше всего подойдет для вашего мышления.Однако в прошлом я думал, что у меня возникла проблема, которую вы описываете, и ушел на сканирование пространств имен, к которым необходимо подходить.Но со временем я понял, что я структурировал с помощью кода неоптимальным образом, и, думая об этом по-другому, облегчил отслеживание кода и одновременно решил эту проблему обратной зависимости.Ваша ситуация вполне может быть другой.Поиск пространства имен для загрузки работает, хотя;)

...