Java pluginable application 消费者如何加载接口?
Java pluginable application how does consumer load interface?
我正在创建一个小爱好 Java task/todo 应用程序。我希望能够为它编写插件,它将存储在某个目录中,可能在 myapplication.jar
.
旁边的 plugins
目录中
我对如何加载这些插件有一些想法,我想编写插件创建者可以使用的接口,例如 SomeActionInterface
,实现后允许插件向 SomeAction
添加功能.
我的问题是,SomeActionInterface
去了哪里,插件创建者将如何访问所述界面?
界面是放在用户应该加载到类路径中的主 myapplication.jar
中,还是放在单独的 myapplication-plugininterfaces.jar
中?
通常你会公开 SPI and API 插件作者可以用来实现他们的代码。通常这些 类 被打包为一个单独的 JAR,这允许构建插件的依赖性最小。
您可以探索一些很好的插件架构示例:
JDBC 公开 java.sql.Connection
并关联 类 因此数据库项目可以实现 Java.
[=27 的驱动程序=]
SLF4J handles new logger framework bindings as plugins. There are slf4-api
and slf4j-ext
dependencies 用于实现插件。
我正在创建一个小爱好 Java task/todo 应用程序。我希望能够为它编写插件,它将存储在某个目录中,可能在 myapplication.jar
.
plugins
目录中
我对如何加载这些插件有一些想法,我想编写插件创建者可以使用的接口,例如 SomeActionInterface
,实现后允许插件向 SomeAction
添加功能.
我的问题是,SomeActionInterface
去了哪里,插件创建者将如何访问所述界面?
界面是放在用户应该加载到类路径中的主 myapplication.jar
中,还是放在单独的 myapplication-plugininterfaces.jar
中?
通常你会公开 SPI and API 插件作者可以用来实现他们的代码。通常这些 类 被打包为一个单独的 JAR,这允许构建插件的依赖性最小。
您可以探索一些很好的插件架构示例:
JDBC 公开
[=27 的驱动程序=]java.sql.Connection
并关联 类 因此数据库项目可以实现 Java.SLF4J handles new logger framework bindings as plugins. There are
slf4-api
andslf4j-ext
dependencies 用于实现插件。