Spring Framework CIO et le contrôle d'inversion de dépendance détaillée DI d'injection

Cet article décrit le cadre de contrôle Inversion du CIO printemps et l'injection de dépendance DI, bienvenue à lire, apprendre ensemble et progresser ensemble.

base Spring Framework Référence : étude approfondie de base au printemps



I. Introduction et procédures du CIO entrée

  • 依赖注入或控制反转的定义中,调用者不负责被调用者的实例创建工作Le travail d'être responsable par le conteneur Spring Framework pour déterminer la configuration du type d'instance par les développeurs pour créer après l'injection de l'appelant.
  • Étant donné que le conteneur Spring est responsable de l'instance callee, puis créer une instance de l'instance est responsable de l' injection de l'appelant, d' où le nom 依赖注入.
  • A créé un exemple de travail de l'appelant ne plus être créé par l'appelant , mais être créé au printemps, le contrôle est transféré du code d'application à l'extérieur du conteneur, l' inversion de contrôle a eu lieu, d' où le nom 控制反转.

Insérer ici l'image Description


Deux .IOC- Inversion de contrôle

  • IOC是 Inverse of Control 的简写,意思是控制反转. Il est de réduire le couplage entre les objets de design.
  • Par CIO, les développeurs ne ont pas besoin d'être préoccupé par le processus de création d'un objet, pour compléter le conteneur Spring. traiter spécifiquement, le programme Spring lit le fichier de configuration, les besoins des objets à haricot acquire créé instance d'un objet créé par le mécanisme de réflexion.
  • Inconvénient : l'objet est instancié par le mécanisme de réflexion, ont donc un certain impact sur les performances du système.
  • avantages:
  • 内存控制: Objet géré unifié, l'objet pour éviter le chaos créé résultat dans les frais généraux de la mémoire supplémentaire. L'optimisation de la Facilite la mémoire.
  • 降低耦合度: Projet évolutif, facile à entretenir. Si le prochain cas de IoC +, supprimez toutes les classes d'implémentation ne causera pas des erreurs de compilation. Lors de l'exécution pour obtenir un code d'erreur spécifique, mais le code ne sera pas un problème ----- autre du côté reflète également un couplage lâche en cours d'utilisation.

Voici un exemple simple: vous êtes locataire de louer un appartement, la COI est équivalent à l'agence immobilière, il était responsable de la gestion de toutes les maisons, il vous donne toutes les listes d'information objets déjà enregistrés que vous recherchez. Si ce que vous avez besoin fournirez quoi.

Insérer ici l'image Description


Trois .DI- injection de dépendances

  • Dependency Injection,说的是创建对象实例时,同时为这个对象注入它所依赖的属性。Équivalente à la relation entre chacun des fèves et de la gestion des conteneurs . Ce récipient est le printemps.
  • Par exemple : Nous embarquons habituellement des cas , il dépend Dao couche couche d'injection de service; exemples couche contrôleur de service dans la couche implantée.

Insérer ici l'image Description


Quatre. CIO et DI

  • alias du CIO, en 2004, Martin Fowler traite du même problème, étant donné que le CIO est l' inversion de contrôle, puis à la fin est « ce qui est le contrôle inversée de celui - ci? » Après une analyse détaillée et des études de faisabilité, il est venu répondre: 获得依赖对象的过程被反转了"" Après que la commande est inversée par le procédé de l' obtention de leurs objets dépendants gérés par l'objet devient actif injection récipient CIO. Il a donc « l' inversion de contrôle » a un nom plus approprié est « l' injection de dépendance (injection de dépendance, DI) ».他的这个答案,实际上给出了实现IOC的方法:注入。
  • L'injection que l'on appelle la dépendance, qui est, par le conteneur IoC pendant le fonctionnement, les dépendances dynamiques injecté dans certains objets.
  • Par conséquent, l' injection de dépendance (DI) et le contrôle inverse (CIO) décrivent la même chose sous des angles différents, il se réfère à l'introduction par conteneur IOC par l' intermédiaire d' une dépendance d'injection, le découplage entre les objets .

Cinq cadres .Spring Utilisations (IoC)

  • 1. Créez un JavaBean
  • 2. configuration JavaBean sera gérée au conteneur Spring
<bean id="book" class="com.it.spring.beans.Book">
    <property name="bookId" value="1"/>
    <property name="bookName" value="Java程序设计"/>
    <property name="bookPrice" value="20.20"/>
    <property name="publishTime">
        <bean class="java.util.Date"/>
    </property>
</bean>
  • 3. initialisation conteneur Spring
  • À ressort profil noyau applicationContext.xml
ClassPathXmlApplicationContext context =    new ClassPathXmlApplicationContext("applicationContext.xml");
  • 4. Obtenir l'objet conteneur Spring
Book book = (Book)context.getBean("book");

  • Principe ressort IoC
  • ① à ressort premier fichier de configuration de base par classe ClassPathXmlApplicationContext
  • ② fichier de configuration de base de l'analyse applicationContext.xml, les informations de configuration de haricot
  • ③ Lorsque nous obtenons l'objet du conteneur, bean id ressort du conteneur crée des objets par la technique de réflexion sous et complète propriété d'injection

VI. Types d'injection de trois façons

  • procédé ①set
  • A la fin de la propriété d'injection valeur d'attribut de balise appelle en fait les méthodes de jeu de propriétés correspondant à
  • Lors de l'injection des biens, des types de valeurs simples, et les chaînes peuvent être spécifiées directement par l'attribut de valeur
  • Il existe deux types d'objets peuvent être des moyens injectés :
<property id="..." name="objAttr">
    <bean class="package.Class"/>
</property>
<bean id="objRef" class="package.Class"/>
<property id="..." name="objAttr" ref="objRef"></property>
  • ② constructeur
  • Il est dans le constructeur (l'ordre des paramètres peut être déterminé par l'indice d'indice = 0,1)
<bean id="book3" class="com.it.spring.beans.Book">
    <constructor‐arg>
        <value>3</value>
    </constructor‐arg>
    <constructor‐arg value="phython程序设计"/>
    <constructor‐arg value="44.44" />
    <constructor‐arg ref="date"></constructor‐arg>
</bean>
  • Peut être configuré pour spécifier le paramètre d'ordre par l'attribut index, s'il n'y a pas d'attribut d'index, tous les paramètres doivent correspondre à l'ordre des paramètres dans le constructeur de la classe.
  • ③ injection d'interface

  • The best investment for young people is to invest in yourself
    Insérer ici l'image Description
  • 2020.03.25 来自辰兮的第36篇博客
Publié 40 articles originaux · éloge de won 182 · vues 40000 +

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45393094/article/details/105095982
conseillé
Classement