From f752e6bb304c28b560e1bd4b5c1bc2719ed15917 Mon Sep 17 00:00:00 2001 From: Michael Angstadt Date: Tue, 26 May 2020 15:46:28 -0400 Subject: [PATCH] Use ServiceLoader class to obtain service instance In the "main-app" module, the `HelloInterface` service instance, `HelloModules`, was just being treated like an ordinary class that was exported from the "hello.modules" module. The code was not treating the class as a service class. This is not a good example of how services are used. This commit makes use of the `ServiceLoader` class, which provides access to the `HelloInterface` instance as defined in the "hello.modules" module. This serves as a better example for how services are used. --- .../main.app/com/baeldung/modules/main/MainApp.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core-java-modules/core-java-9-jigsaw/src/simple-modules/main.app/com/baeldung/modules/main/MainApp.java b/core-java-modules/core-java-9-jigsaw/src/simple-modules/main.app/com/baeldung/modules/main/MainApp.java index eb32cafa31..270bf66c81 100644 --- a/core-java-modules/core-java-9-jigsaw/src/simple-modules/main.app/com/baeldung/modules/main/MainApp.java +++ b/core-java-modules/core-java-9-jigsaw/src/simple-modules/main.app/com/baeldung/modules/main/MainApp.java @@ -1,12 +1,15 @@ package com.baeldung.modules.main; +import com.baeldung.modules.hello.HelloInterface; import com.baeldung.modules.hello.HelloModules; +import java.util.ServiceLoader; public class MainApp { public static void main(String[] args) { HelloModules.doSomething(); - - HelloModules module = new HelloModules(); - module.sayHello(); + + Iterable services = ServiceLoader.load(HelloInterface.class); + HelloInterface service = services.iterator().next(); + service.sayHello(); } }