[JAVA] Super rau! So installieren Sie Dagger2

Über DI

Ich denke, es gibt verschiedene Artikel, also werde ich es weglassen! Grob gesagt eine Methode zum Injizieren von Instanzen von außerhalb der Klasse, um den Grad der Kopplung zu verringern! Wenn Sie eine Schnittstelle vorbereiten und in sie einfügen, ist das Testen einfacher.

Masakari ist willkommen! !! !! Bitte lassen Sie mich wissen, wenn etwas nicht stimmt oder fehlt ...!

Wo es stecken bleibt

Ich möchte die Punkte vorstellen, bei denen ich feststeckte, als ich es zuerst auf Android einführte.

Was steckt fest?

Es gab nicht genügend Möglichkeiten, die Abhängigkeit in Gradle anzugeben. Ich habe die Abhängigkeit angegeben, die zu diesem Zeitpunkt nicht erforderlich ist.

Wie hast du einen Fehler gemacht?

Dagger2 Official #Wie bekomme ich es? Ich habe nur die hier geschriebenen Abhängigkeiten geschrieben, nicht die Java-Abhängigkeiten.

Einführungsmethode

Es war schneller, Github Read Me anzusehen als das offizielle. ..

Fügen Sie den folgenden Code hinzu, um ihn unter der App zu sortieren und zu synchronisieren.

dependencies {
    ...
    compile 'com.google.dagger:dagger:2.14.1'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
}

Jetzt können Sie die Instanz extern einspeisen. Dies ist ausreichend, wenn Sie externes Wissen (WebAPI usw.) und Infrastrukturschicht (Repository) trennen möchten. Ich habe nicht untersucht, wann dagger.android verwendet werden kann. Bitte lassen Sie mich wissen, wenn Sie m (_ _) m mögen

Grob wie man spritzt

Erstellen Sie einfach ein Modul, definieren Sie, was Sie in die Komponente einfügen möchten, und geben Sie "@ Inject" an. Unterstützt die Feld- und Konstruktorinjektion.

Sie können sich Module als einen sogenannten DI-Container vorstellen (sollte). Die Idee ist, die Generierung von Instanzen separat auszuschneiden und an einem Ort zu verwalten.

Erstellen Sie zunächst ein Modul.

//Es ist eine gute Idee, Module zum Suffix hinzuzufügen.
@Module
public class InfrastructureModule {
    //Es ist eine gute Idee, dem Präfix "Bereitstellen" hinzuzufügen.
    @singleton
    @provide
    public RepositoryInterafce provideXYZRepository() {
        return new XYZRepository();
    }
}

Ich schreibe es so. Wenn Sie "@ Singleton" angeben, behandelt Dagger die Generierung als Singleton.

Erstellen Sie als Nächstes eine Komponente.

Die Komponente ist eine Schnittstelle, die definiert, wo ein von Ihnen erstelltes Modul eingefügt werden soll. Schreiben Sie so.

//Es ist eine gute Idee, dem Suffix eine Komponente hinzuzufügen.
//Weil es Singleton-Instanzen behandelt@Geben Sie Singleton an. Andernfalls wird beim Erstellen ein Fehler ausgegeben.
@Singleton
@Component(Modules = {InfrastructureModule.class})
public class InfrastructureComponent {
    //Der Methodenname sollte injizieren. Es ist voller Manieren, aber wenn Sie sich daran gewöhnen, können Sie Gehirnmuskeln spielen! w
    void inject(FugaHoge fugaHoge);
    void inject(FooBar fooBar);
}

Fügen Sie danach "@ Inject" hinzu und fügen Sie es als Feld oder Konstruktor ein.

public class FugaHoge {
  
   //Versuchen Sie die Feldinjektion
   @Inject RepositoryInterface repository;

   public FugaHoge() {
        //Wenn Sie Rebuild ausführen, stellen Sie das Präfix ein:Die Komponentenentität von Dagger wird automatisch generiert.
        //In den Konstruktor injizieren.
        DaggerInfrastructureComponent.create().inject(this);
   }
}

Dadurch wird die Instanz in das Repository eingefügt.

Ende.

Recommended Posts

Super rau! So installieren Sie Dagger2
So installieren Sie Docker
So installieren Sie Docker-Maschine
So installieren Sie MySQL
So installieren Sie Boots Faces
[Rails] So installieren Sie simple_calendar
[Rails] So installieren Sie reCAPTCHA
So installieren Sie JDK8-10 (Mac)
[So installieren Sie Spring Data Jpa]
So installieren Sie Bootstrap in Ruby
So installieren Sie MariaDB 10.4 unter CentOS 8
[Rails] So installieren Sie ImageMagick (RMajick)
[Rails] So installieren Sie Font Awesome
So installieren Sie WildFly unter Ubuntu 18.04
Super einfach in 2 Schritten! So installieren Sie devise! !! (Schienen 5 Version)
So installieren Sie Swiper in Rails
So verwischen Sie das Bild (super einfach)
So installieren Sie Eclipse (Photon) auf Ihrem Mac
So installieren Sie Beta PHP8.0 unter CentOS8
So installieren Sie kafkacat unter Amazon Linux2
Verwendung von Swifts Codable Super Personal Memo
So installieren Sie Netzwerktreiber unter eigenständigem Ubuntu
So installieren Sie Titan 2D (v4.2.0) in einer virtuellen Umgebung
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
Wie installiere ich Oracle JDK 1.8 in Ubuntu 18.04 LTS?
[Für Super-Anfänger] Verwendung des Autofokus: true
So installieren Sie Ruby auf einer EC2-Instanz von AWS
So entwickeln Sie OpenSPIFe
So rufen Sie AmazonSQSAsync auf
Wie schreibe ich Rails
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von java.util.logging
Verwendung der Karte
So installieren Sie den NVIDIA-Treiber auf dem SSH-Ziel Ubuntu
So installieren Sie Geckodriver (Seleniums WebDriver) automatisch mit WebDriverManager
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
Verwendung von TreeSet
So deinstallieren Sie Rails
[Verwendung des Etiketts]
Wie man ein schattiertes Glas macht
Wie schreibe ich Docker-Compose
Wie man Identität benutzt
Wie man Hash benutzt