Constructor Injection with Dependent Object in Spring

Constructor Injection with Dependent Object In the event that there is HAS-A relationship between the classes, we make the case of ward item (contained article) first then pass it as a contention of the fundamental class constructor. Here, our situation is Employee HAS-An Address.

The Address class item will be termed as the subordinate article. The Dependency Injection is an outline design that evacuates the reliance of the projects. In such case we give the data from the outer source, for example, XML document. It makes our code inexactly coupled and less demanding for testing.

Address.java

This class contains three properties, one constructor and toString() method to return the values of these object.

package com.javatportal;

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 city+" "+state+" "+country;
}
}
Employee.java

It contains three properties id, name and address(dependent object) ,two constructors and show() method to show the records of the current object including the depedent object.

package com.javatportal;

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

The ref attribute is used to define the reference of another object, such way we are passing the dependent object as an constructor argument.

<?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.javatportal.Address">
<constructor-arg value="Noida"></constructor-arg>
<constructor-arg value="UP"></constructor-arg>
<constructor-arg value="India"></constructor-arg>
</bean>


<bean id="e" class="com.javatportal.Employee">
<constructor-arg value="12" type="int"></constructor-arg>
<constructor-arg value="Mithilesh"></constructor-arg>
<constructor-arg>
<ref bean="a1"/>
</constructor-arg>
</bean>

</beans>
Test.java

This class gets the bean from the applicationContext.xml file and calls the show method.

package com.javatportal;

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