Provider.java
package org.example.spi;
public interface Provider {
void find();
}
实现类项目spi-client
pom.xml
org.example
spi-provider
1.0-SNAPSHOT
ProviderClient.javva
package org.example.spi;
public class ProviderClient implements Provider {
@Override
public void find() {
System.out.println("spi-client implements the interface of spi-provider.find");
}
}
/meta-INF/services/org.example.spi.Provider
org.example.spi.ProviderClient调用项目spi-esample
pom.xml
org.example spi-client1.0-SNAPSHOT
测试函数, org.example.spi.Example
package org.example.spi;
import java.util.Iterator;
import java.util.ServiceLoader;
public class Example {
public static void main(String[] args) {
ServiceLoader load = ServiceLoader.load(Provider.class);
Iterator iterator = load.iterator();
while (iterator.hasNext()) {
iterator.next().find();
}
}
}
运行结果为
Connected to the target VM, address: '127.0.0.1:56052', transport: 'socket' spi-client implements the interface of spi-provider.find Disconnected from the target VM, address: '127.0.0.1:56052', transport: 'socket' Process finished with exit code 0



