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