[JAVA] Anmerkungen zur Spring Framework-Studie [Teil 1] DI-Container

Einführung

--Diesmal

Gegenstand

uml.png

Abhängigkeitsinjektion (DI)

PasswdEnc passwdEnc = new PasswdEncImpl();
UserRep userRep = new UserRepImpl();
UserService userService = new UserServiceImpl(passwdEnc, userRep);

Bean-Definitionsdatei

――Für "Preset" ...

@Configuration
public class AppConfig{
  @Bean
  UserRep userRep(){
    return new UserRepImpl();
  }

  @Bean
  PasswdEnc passwdEnc(){
    return new PasswdEncImpl();
  }

  @Bean
  UserService userService(){
    return new UserServiceImpl(userRep(), passwdEnc());
  }
}
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); 
//DI-Container generieren

UserService userService = context.getBean(UserService.class) 
//Holen Sie sich die voreingestellte Implementierung über DI-Container

―― Mit anderen Worten, die Verwendung von DI-Behältern kann grob in die folgenden drei Phasen unterteilt werden.

  1. Registrieren Sie die Komponente in der Bean-Definition
  2. Erstellen Sie einen DI-Container aus der Bean-Definition
  3. Rufen Sie die beabsichtigte Implementierung auf, indem Sie DI cottenr und bean angeben (** lookup **).

Komponentenscan

@Component //Registrieren Sie sich als Bohne
public class UserRepImpl implemente UserRep {
  //Kürzung
}
@Component //Registrieren Sie sich als Bohne
public class PasswdEncImpl implemente PasswdEnc {
  //Kürzung
}
@Component //Während Sie sich als Bean registrieren...
public class UserServiceImpl implemente UserService {
  @Autowired //Injizieren Sie andere Bohnen
  public UserServiceImpl(UserRep userRep, PasswdEnc passwdEnc)
}

-- @ Autowired ** durchsucht den DI-Container nach Beans **, die standardmäßig dem Zieltyp entsprechen. --Wenn Sie einen Komponentenscan durchführen, müssen Sie das Paket, auf das Sie für den Komponentenscan abzielen möchten, in der Bean-Definitionsdatei wie unten gezeigt angeben.

@Configuration
@ComponentScan("com.example.hoge")
public class AppConfig{
}

--Lookup ist dasselbe wie bei Verwendung der Bean-Definitionsdatei.

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); 
//DI-Container generieren

UserService userService = context.getBean(UserService.class) 
//Holen Sie sich die voreingestellte Implementierung über DI-Container

Fortsetzung folgt

Verweise

--NTT DATA Co., Ltd. (2016) "Gründliche Einführung in die Entwicklung von Spring Java-Anwendungen mit Spring Framework" Shosuisha

Recommended Posts

Anmerkungen zur Spring Framework-Studie [Teil 1] DI-Container
Spring Framework Zusammenfassung - Über DI
Wichtige Änderungen im Zusammenhang mit dem Spring Framework 5.0 DI-Container
Frühlingsrahmen Einfaches Studienmemo (2): AOP
Puzzle-Studiennotizen
JSUG Study Group 2018 Teil 4 Spring 5 & Spring Boot 2 praktische Eindrücke
Frühlingsrahmen Einfaches Studienmemo (1): ApplicationContext, Bean, Autowired
JavaFX-Studiennotizen
Spielen Sie die Framework-Studie
Docker-Studiennotizen
[Java] Studiennotizen
[Memo] JSUG-Studiengruppe 2020 Teil 1 Frühling x Kotlin
[Java] Spring DI ③
Versuchen Sie es mit einem DI-Container mit Laravel und Spring Boot
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 2
Ich habe mit Spring Framework eine API-Domain erstellt. Teil 1
[Spring Framework] Konfigurationsaufteilung
Mehrsprachige Unterstützung für Spring Framework
spring taglib: Formularnotizen
1. Starten Sie Spring Framework von 1
Über DI des Frühlings ①
dbpedia studie teil 25
Über DI des Frühlings ②
Mavens grundlegende Studiennotizen
spielen Framework persönliche Notizen
Frühlingsgrundlagen ~ DI Edition ~
Lassen Sie uns das Betriebsbild (Atmosphäre) des DI-Containers von Spring erfassen
[Memo] JSUG Study Group 2019 Teil 7 Nutzung des Frühlings in Bizreach