Maison >Java >javaDidacticiel >Quelles sont les trois méthodes d'injection de dépendances Spring ?

Quelles sont les trois méthodes d'injection de dépendances Spring ?

王林
王林original
2020-04-29 13:26:136240parcourir

Quelles sont les trois méthodes d'injection de dépendances Spring ?

Les trois méthodes d'injection de dépendance Spring (DI) sont :

1. Injection d'interface

2. >3. Injection de méthode de constructeur

(Tutoriel vidéo recommandé :

vidéo Java

) Laissez-moi vous présenter comment ces trois types d'injection de dépendances fonctionnent dans Spring.

Nous avons d'abord besoin des classes suivantes :

Interface Login.java

Classe d'implémentation d'interface LoginImpl.java

Une classe de traitement LoginAction.java

Il existe également une classe de test TestMain.java

LoginImpl.java comme suit :

package com.spring.test.di;

public class LoginImpl implements Login{

public String getName(){

return "fengyun";

}

}

TestMain.java

package com.spring.test.di;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.FileSystemXmlApplicationContext;

public class TestMain {

/**

* @param args

*/

public static void main(String[] args) {// 得到ApplicationContext对象

ApplicationContext ctx = new FileSystemXmlApplicationContext(

"applicationContext.xml");

// 得到Bean

LoginAction loginAction = (LoginAction) ctx.getBean("loginAction");

loginAction.execute();

}

}

LoginAction.java sera légèrement différent selon la méthode d'injection utilisée.

Regardons la classe LoginAction.java selon la méthode d'injection

Injection de la méthode Setter :

package com.spring.test.di;

public class LoginAction {

private Login login;

public void execute() {

String name = login.getName();

System.out.print("My Name Is " + name);

}

/**

* @return the login

*/

public Logic getLogin() {

return login;

}

/**

* @param login

* the login to set

*/

public void setLogin(Login login) {

this.login = login;

}

}
définit une variable de type Login login, dans LoginAction n'instancie pas la connexion, mais uniquement sa méthode setter/getter correspondante, car nous utilisons ici la méthode d'injection de dépendances de Spring.

Le fichier de configuration applicationContext.xml est le suivant :

<bean id="login" class="com.spring.test.di.LoginImpl"/>
<bean id="loginAction" class="com.spring.test.di.LoginAction">
<property name="login" ref="login"></property>
</bean>

Maintenant testMain.java peut être exécuté, et nous pouvons voir que My Name Is fengyun est imprimé sur la console.

OK, c'est la méthode d'injection du ressort.

Injection de méthode constructeur

Comme son nom l'indique, l'injection de méthode constructeur signifie que nous nous appuyons sur le constructeur de LoginAction pour atteindre l'objectif de DI, comme indiqué ci-dessous :

LoginAction.java

package com.spring.test.di;

public class LoginAction {

private Login login;

public LoginAction(Login login) {

this.login = login;

}

public void execute() {

String name = login.getName();

System.out.print("My Name Is " + name);

}

}

Ici, nous avons ajouté un constructeur LoginAction

le fichier de configuration applicationContext.xml est le suivant :

<bean id="login" class="com.spring.test.di.LoginImpl"/>
<bean id="loginAction" class="com.spring.test.di.LoginAction">
<constructor­arg index="0" ref="login"></constructor­arg>
</bean>

Nous utilisons constructorarg pour la configuration. L'attribut index est utilisé pour indiquer l'ordre. de paramètres dans le constructeur, s'il y a plusieurs paramètres, configurez

dans l'ordre de 0, 1... Nous pouvons maintenant exécuter testMain.java, et le résultat est exactement le même que si vous utilisiez la méthode Setter pour injecter.

Une chose à noter est : si le constructeur a plusieurs paramètres, tels que : le paramètre 1, le paramètre 2 et le paramètre 2 dépend du paramètre 1, dans ce cas, vous devez faire attention à l'ordre du constructeur , et les paramètres doivent être 1 est placé avant le paramètre 2.

Continuons à parler de l'injection d'interface que nous n'utilisons pas couramment. Prenons LoginAction comme exemple. Nous l'avons modifié comme suit :

LoginAction.java

package com.spring.test.di;

public class LoginAction {

private Logic login;

public void execute() {

try {

Object obj = Class.forName("com.spring.test.di.LoginImpl")

.newInstance();

login = (Login) obj;

String name = login.getName();

System.out.print("My Name Is " + name);

} catch (Exception e) {

e.printStackTrace();

}

}

}

Fichier de configuration :

<bean id="logic" class="com.spring.test.di.LoginImpl"/>
<bean id="loginAction" class="com.spring.test.di.LoginAction">
</bean>

. Les deux méthodes d'injection les plus couramment utilisées au travail sont Setter et Constructor.

Tutoriel recommandé :

Programme d'entrée Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn