2013-11-26 36 views
5

假设我有一个接口com.example.Marker和我有一个实现这一点,例如com.example.MarkerImplA。为了让他们中的一个注册,我需要把一个文本文件中META-INF/services/com.example.Marker看起来像这样方法文档中有多个SPI实现在一个JAR

com.example.MarkerImplA 

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

回答

11

只需添加多行与完全合格的供应商的类名

所以,如果你的SPI是com.example.Marker

META-INF/services/com.example.Marker 

添加的每个实施新行

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

详情拿看看JAR File Specification

提供者配置文件

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

+0

感谢这个累人的答案! – micfra

相关问题