Java 9 Dependency Injection
上QQ阅读APP看书,第一时间看更新

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: