2017-10-25 2 views
0

Ich lerne Java, aber fand das folgende Stück Code. Ich bin verwirrt. Was ist bind(X.class).to(X.class); für?hk2: warum binden (X.class) .to (X.class)

import org.glassfish.hk2.utilities.binding.AbstractBinder; 
public class ApplicationBinder extends AbstractBinder { 
    @Override 
    protected void configure() { 
     bind(X.class).to(X.class); 
    } 
} 

Dank

Antwort

1

Sie konfigurieren, wie Sie wollen Ihre Dienste in der DI (Dependency Injection) System entdeckt zu werden. bind(Service).to(Contract) ist im Grunde sagen, dass Sie die Service als injizierbaren Service bereitstellen möchten, und es als Contract "werben" möchten. Mit "werben" meine ich, was Sie in der Lage sein möchten, es als zu injizieren. Zum Beispiel Service kann UserRepositoryImpl sein, während ContractUserRepository (Schnittstelle) sein kann. Damit wären Sie nur in der Lage @Inject UserRepository als das, was Sie werben. Der Vorteil davon sind alle Vorteile, die mit programming to an interface kommen.

Beispiel

Hier die UserRepository wird in die UserResource injiziert. Wenn das DI-System es injiziert, ist es tatsächlich die UserRepositoryImpl Instanz.

+0

aber wie für meinen Beitrag, ist es besser, diese Klasse zu importieren oder DI in dieser Klasse? – BAE

+0

Nicht sicher, was Sie mit "Import oder DI" meinen. Meinst du das manuelle Instanziieren gegen DI? Dafür können Sie jeden Artikel über DI lesen und Sie werden die Vorteile sehen. –

Verwandte Themen