假设我有一个接口com.example.Marker
,我确实有一个这样的实现,例如com.example.MarkerImplA
。要让其中一个注册,我需要在META-INF/services/com.example.Marker
中放置一个文本文件,如下所示
com.example.MarkerImplA
这就像一个魅力。现在,我在同一个jar文件中有另一个实现,例如com.example.MarkerImpl2
。如何实现第二个注册?
答案 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编码。