如何在一个JAR中实现多个SPI实现

时间:2013-11-26 15:00:51

标签: java

假设我有一个接口com.example.Marker,我确实有一个这样的实现,例如com.example.MarkerImplA。要让其中一个注册,我需要在META-INF/services/com.example.Marker中放置一个文本文件,如下所示

com.example.MarkerImplA

这就像一个魅力。现在,我在同一个jar文件中有另一个实现,例如com.example.MarkerImpl2。如何实现第二个注册?

1 个答案:

答案 0 :(得分:14)

只需使用完全合格的提供商的类名

添加多行

因此,如果您的SPI是com.example.Marker

META-INF/services/com.example.Marker

在新行中添加每个实现

com.example.MarkerImplA
com.example.MarkerImplB
com.example.MarkerImplC

有关详细信息,请查看JAR File Specification

  

提供商配置文件

     

服务提供商通过在资源中放置提供者配置文件来标识自己   目录META-INF / services。文件名应包含完整限定名   抽象服务类。该文件应包含以换行符分隔的唯一具体列表   提供者类名称。空格和制表符以及空行将被忽略。评论   字符是'#'(0x23);在每一行中,第一个注释字符后面的所有字符都是   忽略。该文件必须以UTF-8编码。