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