Java ServiceLoader Example
November 17, 2023
Java ServiceLoader
provides the flexibility to load different implementation of a services.
Suppose we have a service class i.e.
CPService
as an interface. As we know that there can be more than one implementation of CPService
.
Find the
CPService
interface.
CPService.java
package com.concretepage.util; public interface CPService { public void show(); }
CPService
interface.
CPServiceImplOne.java
package com.concretepage.util; public class CPServiceImplOne implements CPService { @Override public void show(){ System.out.println("CPServiceImplOne has been loaded...."); } }
package com.concretepage.util; public class CPServiceImplTwo implements CPService { @Override public void show(){ System.out.println("CPServiceImplTwo has been loaded...."); } }
CPServiceImplOne.java
. We need to create a folder structure META-INF/services inside our classpath and then create a file with fully qualified Service name. The structure will look like
META-INF --- services ---- com.util.CPService
META-INF/services/com.util.CPService
com.util.concretepage.CPServiceImplOne
ServiceLoaderDemo.java
package com.concretepage.util; import java.util.ServiceLoader; public class ServiceLoaderDemo { public static void main(String[] args) { ServiceLoader<CPService> serviceLoader = ServiceLoader.load(CPService.class); for (CPService cpService : serviceLoader) { cpService.show(); } } }
CPServiceImplOne has been loaded....
CPServiceImplTwo has been loaded....