Maison >Java >javaDidacticiel >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 constructeurComme 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"> <constructorarg index="0" ref="login"></constructorarg> </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 JavaCe 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!