Java How To
 


Service-Provider mit Fabrik-Methode

How To ...

Dynamisches Laden und Verwenden von Services ähnlich dem Factory Method Pattern

Hintergründe

Seit Version 6 enthält Java-SE die Klasse ServiceLoader, die die Verwaltung von Services vereinfacht. Die grundlegende Verwendung ist auf der Seite Grundlagen erläutert.

So geht's

Implementierung einer Methode, die eine Service-Instanz zurückgibt.

    public class SomeServiceProvider {

        public static SomeService getDetfault() {
            ServiceLoader<SomeService> loader = ServiceLoader.load(SomeService.class);
            for (SomeService provider : loader) {
                // hier nur einer, sonst Auswahl über System-Property, Annotation o.ä.
                return provider;
            }
            throw new InstantiationError("Kein Provider registriert");
        }
    }