Service client application
Now, create a client application named com.packt.client, which lists all implementation of NotificationService by calling the getInstances() method. A client application only requires the com.packt.service.api module as dependency in module-info.java. But we have to copy notification-api.jar and sms-service.jar into the lib folder to resolve compile time dependency of the service API and service provider module. Our ClientApplication.java and module-info.java will look as follows:
ClientApplication.java
package com.packt.client;
import java.util.List;
import com.packt.service.api.NotificationService;
public class ClientApplication {
public static void main(String[] args) {
List<NotificationService> notificationServices = NotificationService.getInstances();
for (NotificationService services : notificationServices) {
services.sendNotification("Hello", "1234567890");
}
}
}
For our client application, we have to only mention the requires clause for com.packt.service.api in the module-info.java file:
module-info.java
module com.packt.client {
requires com.packt.service.api;
}
The following are commands that need to run in order to run our client application. In the output we will get a message from SMSServiceImpl.java: