【问题标题】:Expose a Java Service Provider Interface to Service Providers向服务提供者公开 Java 服务提供者接口
【发布时间】:2023-03-28 03:46:01
【问题描述】:

我正在尝试为插件/应用程序创建一个框架,我想我已经决定在 Java 中使用服务提供者接口 (SPI) 来实现这一目标。最终的愿景是人们可以下载插件(如应用商店),然后只需将 jar 放入一个文件夹中,他们就可以使用现有程序。

所以我有一个班级PluginInterface,这将是我的 SPI。我希望所有插件都实现这个类(它具有doesAccepthandle 等基本方法)。由于第 3 方将创建服务提供者,我怎样才能让他们在他们的代码中引用这个 Java 接口(以便他们可以实现它),而不实际向他们提供主应用程序的源代码?

【问题讨论】:

    标签: java service-provider


    【解决方案1】:

    创建两个 JAR api 和 impl,您将应用程序放入 impl 中,并将您需要与第三方开发人员共享的任何代码放入 api 中。

    示例:jaxb-api.jar 和 jaxb-impl.jar

    【讨论】:

    • 知道如何只用一些选定的代码(在 Intellij 或命令行中)创建一个 jar 吗?
    • 你需要创建一个多maven项目。你有两个项目 api 和 impl。
    • Maven 不是 Java 中的强制选项,但这不是主题 ;-) 为了正确打包您的 JARS,重点是尊重 the tutorial...
    • 例如,jaxb-impl.jar 应该包含一个 META-INF/services 文件夹,其中包含适当的文件来指定实现的接口。
    • 在您的情况下,您应该有一个以接口命名的文本文件:META-INF/services/PluginInterface。内容中是单行,带有实现类的全名...
    猜你喜欢
    • 2012-07-07
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多