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