[JAVA] Notes de l'étude Spring Framework [Partie 1] Conteneur DI

introduction

--Cette fois --À propos du conteneur DI, l'une des fondations de Spring Framework ――Il existe de nombreux compléments basés sur mon interprétation, donc si vous avez des suggestions, n'hésitez pas à nous contacter.

Matière

uml.png

Injection de dépendance (DI)

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

Fichier de définition de bean

――Pour "préréglé" ... --Définissez dans la classe (** fichier de définition Bean **) avec l'annotation @ Configuration. --Ajoutez un composant avec l'annotation @ Bean et spécifiez l'implémentation que vous souhaitez appeler à chaque fois.

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

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

  @Bean
  UserService userService(){
    return new UserServiceImpl(userRep(), passwdEnc());
  }
}

--Si vous définissez à l'avance comme ci-dessus, vous pouvez facilement initialiser le type d'interface ʻUserService` via le conteneur DI.

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); 
//Générer un conteneur DI

UserService userService = context.getBean(UserService.class) 
//Obtenez une implémentation prédéfinie via le conteneur DI

―― En d'autres termes, l'utilisation de conteneurs DI est grossièrement divisée en trois phases.

  1. Enregistrez le composant dans la définition du bean
  2. Créez un conteneur DI à partir de la définition du bean
  3. Appelez l'implémentation prévue en spécifiant DI cottenr et bean (** lookup **)

Analyse des composants

@Component //S'enregistrer en tant que bean
public class UserRepImpl implemente UserRep {
  //réduction
}
@Component //S'enregistrer en tant que bean
public class PasswdEncImpl implemente PasswdEnc {
  //réduction
}
@Component //En s'enregistrant comme un haricot...
public class UserServiceImpl implemente UserService {
  @Autowired //Injecter d'autres haricots
  public UserServiceImpl(UserRep userRep, PasswdEnc passwdEnc)
}

-- @ Autowired ** recherche dans le conteneur DI les beans ** qui correspondent au type de cible par défaut. --Lors de l'exécution d'une analyse de composant, il est nécessaire de spécifier le package que vous souhaitez cibler pour l'analyse de composant dans le fichier de définition de Bean comme indiqué ci-dessous.

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

--La recherche est la même que lors de l'utilisation du fichier de définition Bean.

ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); 
//Générer un conteneur DI

UserService userService = context.getBean(UserService.class) 
//Obtenez une implémentation prédéfinie via le conteneur DI

à suivre

Les références

--NTT DATA Co., Ltd. (2016) "Présentation approfondie du développement d'applications Spring Java avec Spring Framework" Shosuisha

Recommended Posts

Notes de l'étude Spring Framework [Partie 1] Conteneur DI
Résumé de Spring Framework - À propos de DI
Modifications majeures liées au conteneur Spring Framework 5.0 DI
cadre de printemps Mémo d'étude simple (2): AOP
Notes d'étude de puzzle
JSUG Study Group 2018 Part 4 Spring 5 & Spring Boot 2 Impressions pratiques
Spring framework Mémo d'étude simple (1): ApplicationContext, Bean, Autowired
Notes d'étude JavaFX
Etude Play Framework
Notes d'étude Docker
[Java] Notes d'étude
[Memo] JSUG Study Group 2020 Partie 1 Spring x Kotlin
[Java] Spring DI ③
Essayez d'utiliser un conteneur DI avec Laravel et Spring Boot
J'ai créé un domaine api avec Spring Framework. Partie 2
J'ai créé un domaine api avec Spring Framework. Partie 1
[Spring Framework] Division de la configuration
Prise en charge multilingue de Spring Framework
taglib printanier: notes de forme
1. Démarrez Spring Framework à partir de 1
À propos de DI of Spring ①
étude dbpedia partie 25
À propos de DI of Spring ②
Notes d'étude de base de Maven
jouer des notes personnelles de cadre
Les bases du printemps ~ Édition DI ~
Saisissons l'image de fonctionnement (atmosphère) du conteneur DI de Spring
[Memo] JSUG Study Group 2019 Partie 7 Utilisation du printemps dans Bizreach