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

Esempio di iniezione di dipendenze tramite costruttore

Possiamo iniettare dipendenze tramite il costruttore. <bean>del <constructor-arg>Gli elementi figli sono utilizzati per l'iniezione di costruttori. In questo esempio, dobbiamo iniettare

Valori originali e basati su stringa Oggetti dipendenti (che contengono oggetti) Valori di insieme

Iniezione di valori originali e basati su stringa

Vediamo un esempio semplice di iniezione di valori originali e basati su stringa. In questo esempio abbiamo creato tre file:

Employee.java applicationContext.xml Test.java

Employee.java

Questa è una classe semplice che contiene due campi id e name. Questa classe ha quattro costruttori e un metodo.

package com.w3codebox;
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

Forniamo informazioni ai Bean tramite questo file. L'elemento constructor-arg chiama il costruttore. In questo caso, verrà chiamato il costruttore parametrizzato di tipo int. L'attributo value dell'elemento constructor-arg assegna il valore specificato. L'attributo type specifica che verrà chiamato il costruttore di parametri int.

<?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

Questa classe recupera i Bean dal file applicationContext.xml e chiama il metodo show.

package com.w3codebox;
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();
        
    }
}

Output: 10 vuoto


Iniezione di valori basati su stringa

Se non specifici l'attributo type nel costruttore arg, verrà chiamato il costruttore di tipo stringa di default.

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

Se modifichi l'elemento bean come descritto, verrà chiamato il costruttore di parametri stringa e l'output sarà 0 10.

Output: 0 10


Puoi passare stringhe testuali come segue

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

Output: 0 Sonoo


Puoi passare numeri e stringhe testuali come segue

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

Output: 10 Sonoo