Préface
L'inversion du contrôle (CIO) est utilisée pour résoudre le couplage et est principalement divisée en deux types: injection de dépendance et recherche de dépendance.
L'injection de dépendance consiste à injecter les dépendances qui devraient être dans le programme externe dans le programme. Bien sûr, c'est aussi un concept de modèles de conception.
En supposant qu'il existe une implémentation B des interfaces A et A, ce code sera exécuté a a = new B (); À l'heure actuelle, une certaine dépendance se produira inévitablement. Cependant, l'interface semble résoudre la dépendance, mais le couplage se produira toujours en le faisant. Nous pouvons utiliser l'injection de dépendance pour atteindre le découplage. Dans l'IOC, vous pouvez mettre le code sur lequel vous souhaitez dépendre dans XML et former cette relation de dépendance en cas de besoin via un conteneur, c'est-à-dire injecter l'implémentation d'interface requise dans la classe qui en a besoin. Cela peut être la source du terme "injection de dépendance".
Compréhension simple de l'injection de dépendance
Alors, mettons maintenant de côté les technologies liées au printemps et au XML, comment pouvons-nous utiliser le moyen le plus simple de mettre en œuvre une injection de dépendance? Maintenant, c'est toujours la mise en œuvre des interfaces A et A.
Notre objectif est donc comme ça, a a = new b (); Maintenant, nous définissons une classe C, et ce qui suit est la relation entre C et A. Pour que le nouveau, C crée une classe d'implémentation pour une interface
classe publique C {privé a a; public c (a a) {this.a = a; }}Alors, comment utiliser du nouveau? Définissez une classe D et appelez le constructeur de C dans D New B (); c'est
classe publique D {@Test public void use () {c c = new C (new B ()); }}De cette façon, nous n'aurons pas de dépendances entre A et B dans C. Si nous voulons modifier la classe d'implémentation de A, nous pouvons modifier directement les paramètres de la méthode de construction dans D. Il est très simple et résout également le couplage. Cette méthode est la plus couramment appelée injection de constructeur.
Ensuite, le ressort est la solution au couplage et à l'utilisation du CIO. Voici l'exemple le plus simple de l'injection de dépendance au printemps:
SpringConfig.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: ScheMalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id = "Sayhello"> <constructor-arg are /> </ beans>
Analyse: deux haricots sont configurés ici. La première consiste à injecter un haricot dans le constructeur, et le second est le haricot à injecter dans le constructeur.
Bonjour.java
Package Smile; / ** * Créé par Smile le 2016/4/21. * / public class hello {public hello () {System.out.println ("bonjour"); } public void sayshello () {System.out.println ("Je veux dire bonjour"); }}Theinterface.java
Package Smile; / ** * Créé par Smile le 2016/4/20. * / public class theTesterface {private hello hello; public theTesterface (Hello Hello) {this.hello = bonjour; }}Use.java
package com.smile; import org.junit.test; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationcontext; importat smile.hello; / ** * créé par Smile le 2016/4/21. * / public class use {@test public void useTest () {applicationContext context = new ClassPathXmlApplicationContext ("SpringConfig.xml"); Bonjour bonjour = (Hello) context.getBean ("Hello"); bonjour.sayhello (); }}Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.