我有一个可以通过defmethod
调用进行扩展的应用程序。应该在运行时中扩展应用程序,方法是将新的名称空间添加到包含其他defmethod
调用的类路径中。
我正在寻找一种依赖注入解决方案。问题是:我的应用程序如何知道应该require
应该使用哪些命名空间,以便defmethod
调用才能生效?
一种解决方案是拥有一个中央配置文件,其中包含可能需要的名称空间的名称。缺点是要启用插件时,需要手动编辑配置。
另一种方法是以某种方式动态扫描类路径中的其他名称空间,并根据谓词(例如namespce名称前缀)要求它们。
我仅找到了这两种解决方案,但我想知道在Clojure中进行运行时依赖注入的其他方式可能是什么。以及通常用于此目的的库是什么?
谢谢。