2016-10-25 4 views
2

I Dagger 2 Injektion bin mit etwas Abhängigkeit Client zur Verfügung zu stellen:Dagger 2 inject Singletons ohne Modul

public class Dependency { 

    @Inject 
    Dependency() { 
    } 

    void check() { 
     System.out.print("Instantiated"); 
    } 
} 

public class Client { 

    @Inject Dependency dependency; 

    Client() { 
     ClientComponent component = DaggerClientComponent.create(); 
     component.inject(this); 
    } 

    void checkDependency() { 
     dependency.check(); 
    } 
} 

@Component 
public interface ClientComponent { 
    void inject(Client client); 
} 

public class Test { 
    public static void main(String... args) { 
     Client client = new Client(); 
     client.checkDependency(); 
    } 
} 

Es funktioniert gut, aber jetzt will ich meine Abhängigkeit Singleton machen. Wie kann ich es erreichen? Sollte ich ein Modul für diese Abhängigkeit erstellen und eine Methode mit Singleton-Annotationen kommentieren oder habe ich noch weitere Optionen, um die Modulerstellung zu vermeiden?

+0

Haben Sie meine Lösung versucht ?? –

Antwort

5

Fügen Sie @Singleton an der Spitze Ihrer Klasse hinzu und fügen Sie der Komponente @Singleton Annotation hinzu.

Sie sollten auch die Erstellung Ihrer Komponente an einen besseren Ort verschieben - onCreate-Methode von App-Objekt ist der richtige Ort.

+0

Es funktioniert, danke! Einverstanden, Injektion im Konstruktor ist eine schlechte Idee, ich habe es gemacht, um die Menge an Code zu reduzieren. –

+0

Ich bin froh, dass ich dir viel Glück helfen konnte;) –

Verwandte Themen