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

Beispiel zur Konstruktorinjektion von Abhängigkeiten

Wir können Abhängigkeiten über den Konstruktor injizieren. <bean>der <constructor-arg>Unterelemente zur Konstruktorinjektion. Hier müssen wir injizieren

Ursprüngliche und auf Strings basierende Werte Abhängige Objekte (enthalten Objekte) Sammlungswerte usw.

Einfügung von ursprünglichen Werten und Werten basierend auf Strings

Lassen Sie uns einen Blick auf einfache Beispiele für die Einfügung von ursprünglichen Werten und Werten basierend auf Strings werfen. Wir haben hier drei Dateien erstellt:

Employee.java applicationContext.xml Test.java

Employee.java

Dies ist eine einfache Klasse, die die beiden Felder id und name enthält. Diese Klasse hat vier Konstruktoren und eine Methode.

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

Wir liefern Informationen an das Bean durch diese Datei. constructor-Der arg-Element ruft den Constructor auf. In diesem Fall wird der parametrierte Constructor vom Typ int aufgerufen. Constructor-Der Wert der Attribut property des arg-Elements wird die angegebene Wert zugewiesen. Das Attribut type bestimmt, dass der int-Parameter-Constructor aufgerufen wird.

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

Diese Klasse holt Beans aus der Datei applicationContext.xml und ruft die show-Methode auf.

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();
        
    }
}

Ausgabe: 10Leer


InjektionvonWertenaufBasisvonZeichenketten

WennSiedenAttributtypeimKonstruktorarg-Element nicht angeben, wird standardmäßig der String-TypKonstruktor aufgerufen.

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

WennSiewieobenbeschriebendenBean-Element ändern, wird der String-ParameterKonstruktor aufgerufen und die Ausgabe wird 0 sein 10。

Ausgabe: 0 10


SiekönnenZeichenkettenGroessenauffolgendübergeben:

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

Ausgabe: 0 Sonoo


SiekönnenIntergroessenundZeichenkettenauffolgendübergeben:

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

Ausgabe: 10 Sonoo