<dependency>
<groupId>com.google.auto.service</groupId>
<artifactId>auto-service</artifactId>
<version>1.0-rc6</version>
<scope>provided</scope>
</dependency>
public interface Calculator {
int add(int a, int b);
}
import com.google.auto.service.AutoService;
@AutoService(Calculator.class)
public class BasicCalculator implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
}
<build>
...
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>com.google.auto.service</groupId>
<artifactId>auto-service</artifactId>
<version>1.0-rc6</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
import java.util.ServiceLoader;
public class App {
public static void main(String[] args) {
ServiceLoader<Calculator> calculatorLoader = ServiceLoader.load(Calculator.class);
for (Calculator calculator : calculatorLoader) {
int result = calculator.add(10, 20);
System.out.println(result);
}
}
}