English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemple d'injection de dépendances par constructeur

Nous pouvons injecter des dépendances via le constructeur. <bean>de <constructor-arg>Les éléments enfants sont utilisés pour l'injection de constructeurs. Ici, nous devons injecter

Valeurs originales et basées sur des chaînes Objets dépendants (contenant des objets) Valeurs de collection

Valeurs injectées à partir de valeurs originales et basées sur des chaînes

Laissons-nous voir des exemples simples de valeurs injectées à partir de valeurs originales et basées sur des chaînes. Nous avons créé trois fichiers ici :

Employee.java applicationContext.xml Test.java

Employee.java

C'est une classe simple, contenant deux champs id et name. Cette classe contient quatre constructeurs et une méthode.

package com.w;3codebox;
public class Employee {
private int id;
private String name;
public Employee() { System.out.println("def cons"); }
public Employee(int id) { this.id = id; }
public Employee(String name) { this.name = name; }
public Employee(int id, String name) {
    this.id = id;
    this.name = name;
}
void show(){
    System.out.println(id+" "+name);
}
}


applicationContext.xml

Nous fournissons des informations à travers ce fichier au Bean. constructor-L'élément arg appelle le constructeur. Dans ce cas, le constructeur paramétré de type int sera appelé. Constructor-La propriété value de l'élément arg attribue la valeur spécifiée. L'attribut type spécifie que le constructeur de paramètre int sera appelé.

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    xmlns:p="http://www.springframework.org/schema/p
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="e" class="com.w3codebox.Employee">
<constructor-arg value="10" type="int"></constructor-arg>
</bean>
</beans>

Test.java

Cette classe récupère les Bean à partir du fichier applicationContext.xml et appelle la méthode show.

package com.w;3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;
public class Test {
    public static void main(String[] args) {
        
        Resource r=new ClassPathResource("applicationContext.xml");
        BeanFactory factory=new XmlBeanFactory(r);
        
        Employee s=(Employee)factory.getBean("e");
        s.show();
        
    }
}

Sortie: 10Vide


Injection de valeurs basées sur des chaînes

Si vous n'avez pas spécifié l'attribut type dans l'élément arg du constructeur, le constructeur de type de chaîne sera appelé par défaut.

....
<bean id="e" class="com.w3codebox.Employee">
<constructor-arg value="10></constructor-arg>
</bean>
....

Si vous modifiez l'élément bean comme indiqué ci-dessus, le constructeur de paramètres de chaîne sera appelé et la sortie sera 0 10。

Sortie: 0 10


Vous pouvez également transmettre des chaînes littérales comme suit:

....
<bean id="e" class="com.w3codebox.Employee">
<constructor-arg value="Sonoo"></constructor-arg>
</bean>
....

Sortie: 0 Sonoo


Vous pouvez transmettre des entiers littéraux et des chaînes de caractères de la manière suivante

....
<bean id="e" class="com.w3codebox.Employee">
<constructor-arg value="10" type="int" ></constructor-arg>
<constructor-arg value="Sonoo"></constructor-arg>
</bean>
....

Sortie: 10 Sonoo