English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Podemos injetar dependências através do construtor. <bean>do <constructor-arg>Elementos filhos são usados para injeção de construtores. Aqui, vamos injetar
Valores originais e baseados em strings Objetos dependentes (contendo objetos) Valores de conjunto
Vamos ver alguns exemplos simples de injeção de valores originais e baseados em strings. Aqui, criamos três arquivos:
Employee.java applicationContext.xml Test.java
Employee.java
Esta é uma classe simples, contendo dois campos id e name. Esta classe possui quatro construtores e um método.
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
Nós fornecemos informações a partir deste arquivo ao Bean. constructor-O elemento arg chama o construtor. Neste caso, será chamado o construtor parametrizado do tipo int. Constructor-A propriedade value do elemento arg atribui o valor especificado. A propriedade type especifica que será chamado o construtor de parâmetro 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 valor="10" type="int"></constructor-arg> </bean> </beans>
Test.java
Esta classe obtém o Bean a partir do arquivo applicationContext.xml e chama o método 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(); } }
Saída: 10Vazio
Se você não especificar a propriedade type no elemento arg do construtor, o construtor de tipo string será chamado automaticamente.
.... <bean id="e" class="com.w3codebox.Employee"> <constructor-arg valor="10></constructor-arg> </bean> ....
Se alterar o elemento bean conforme mencionado acima, será chamado o construtor de parâmetro de string e a saída será 0 10。
Saída: 0 10
Você também pode passar strings da seguinte forma:
.... <bean id="e" class="com.w3codebox.Employee"> <constructor-arg valor="Sonoo"></constructor-arg> </bean> ....
Saída: 0 Sonoo
Você pode passar números inteiros e strings da seguinte forma:
.... <bean id="e" class="com.w3codebox.Employee"> <constructor-arg valor="10" tipo="int" "</constructor-arg> <constructor-arg valor="Sonoo"></constructor-arg> </bean> ....
Saída: 10 Sonoo