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