![Java 9 Dependency Injection](https://wfqqreader-1252317822.image.myqcloud.com/cover/971/36699971/b_36699971.jpg)
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:
![](https://epubservercos.yuewen.com/6E58C4/19470394608891806/epubprivate/OEBPS/Images/9ea36e48-ccad-4ea0-92c1-89edc43ce022.png?sign=1738868754-UF61Drz6YgRwYoNIKLxA5P2AJoKLo3mh-0-0511bf32713bf0c7387c7586a6483e53)