我想在 Java 应用程序中实现动态插件功能。理想情况下:
- 该应用程序将定义一个
Plugin
具有类似方法的接口getCapabilities()
。 - 插件将是一个 JAR
pluginX.jar
,其中包含一个类PluginXImpl
实现Plugin
(可能还有其他一些)。 - 用户将放入
pluginX.jar
一个特殊的目录或设置一个指向它的配置参数。用户不一定必须包含pluginX.jar
在他们的类路径中。 - 应用程序会找到
PluginXImpl
(可能通过 JAR 清单,也可能通过反射)并将其添加到注册表中。 - 客户端可以获取 的实例
PluginXImpl
,例如,通过调用类似 的方法getPluginWithCapabilities("X")
。用户不一定必须知道插件的名称。
我有一种感觉,我应该能够用peaberry做到这一点,但我无法理解文档。我花了一些时间学习 Guice,所以我的首选答案不是“使用Spring Dynamic Modules ”。
谁能给我一个简单的想法,告诉我如何使用 Guice/peaberry、OSGi 或纯 Java 来做这件事?