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

具有依赖对象的构造函数注入

如果类之间存在HAS-A关系,则首先创建依赖对象(包含对象)的实例,然后将其作为主类构造函数的参数传递。在这里,我们的场景是员工HAS-A地址。 Address类对象将称为从属对象。首先让我们看一下Address类:

Address.java

该类包含三个属性,一个构造函数和toString()方法以返回这些对象的值。

package com.w3codebox;
public class Address {
private String city;
private String state;
private String country;
public Address(String city, String state, String country) {
    super();
    this.city = city;
    this.state = state;
    this.country = country;
}
public String toString(){
    return ville+" "+état+" "+pays;
}
}

Employee.java

Il contient trois propriétés id, nom et adresse (objet dépendant), deux constructeurs et la méthode show() pour afficher les enregistrements de l'objet courant (y compris les objets dépendants).

package com.w3codebox;
public class Employee {
private int id;
private String name;
private Address address;//Aggregation
public Employee() {System.out.println("def cons");}
public Employee(int id, String name, Address address) {
    super();
    this.id = id;
    this.name = name;
    this.address = address;
}
void show(){
    System.out.println(id+" "+name);
    System.out.println(address.toString());
}
}

applicationContext.xml

ref Cette propriété est utilisée pour définir une référence à un autre objet, par exemple, nous transmettons l'objet dépendant en tant que paramètre du constructeur.

<?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="a1" class="com.w3codebox.Address">
<constructor-arg value="ghaziabad"></constructor-arg>
<constructor-arg value="UP"></constructor-arg>
<constructor-arg value="India"></constructor-arg>
</bean>
<bean id="e" class="com.w3codebox.Employee">
<constructor-arg value="12" type="int"></constructor-arg>
<constructor-arg value="Sonoo"></constructor-arg>
<constructor-arg>
<ref bean="a1"/>
</constructor-arg>
</bean>
</beans>

Test.java

此类从applicationContext.xml文件获取Bean并调用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();
        
    }
}