2016-11-15 3 views
0

Gibt es eine Möglichkeit, eine dynamische Bindung zur Laufzeit bereitzustellen? Mit AbstractBinder können Sie eine Factory binden, aber der Klassentyp muss zum Zeitpunkt der Kompilierung bekannt sein.Jersey 2.x dynamische Bindung

etwas in der Art von:

public class MyDynamicBinder implements DynamicBinder { 
    @Override 
    public boolean canBind(Class<?> someContract) { 
     return iCanBindThis(someContract); 
    } 

    @Override 
    public Object bind(Class<?> someContract) { 
     return getMyInstance(someContract); 
    } 
} 

Antwort

0

hk2 ist eine extrem dynamische Spritzbehälter. Im Gegensatz zu GUICE und CDI kann es zu seiner Zeit Dienste zu seinem ServiceLocator hinzufügen (wenn Sie entsprechende Berechtigung haben). Mit dem ServiceLocator (ein Dienst, der überall verfügbar ist, wo Sie einen anderen hk2-Dienst haben), können Sie die Methoden in ServiceLocatorUtilities wie addClasses oder addOneDescriptor verwenden, um alle Dienste, die Sie benötigen, jederzeit hinzuzufügen. Sie können Dienste auch jederzeit entfernen, aber nur wenige Nutzer tun dies (es sei denn, Sie schreiben einen eigenen dynamischen Container).

Verwandte Themen