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

Setter injection and dependent object example

Just like constructor injection, we can use setter injection to inject another bean's dependency. In this case, we use property element. In this scenario, our scene is Employee HAS-A Address. The Address class object will be called a dependent object. Let's take a look at the Address class first:

Address.java

This class contains four properties, including setter and getter, and the toString() method.

package com.w;3codebox;
public class Address {
private String addressLine1,city,state,country;
//getters and setters
public String toString(){
    return addressLine1+" "+city+" "+state+" "+country;

Employee.java

It contains three properties: id, name, and address (dependent object), using the setter and getter of the displayInfo() method.

package com.w;3codebox;
public class Employee {
private int id;
private String name;
private Address address;
//setters and getters
void displayInfo(){
    System.out.println(id+" "+name);
    System.out.println(address);


applicationContext.xml

attributeelement's ref Attribute is used to define a reference to another bean.

<?xml version="1.0" encoding="UTF-8"1.0" encoding="UTF-8"-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="address1" class="com.w3codebox.Address">
<property name="addressLine1" value="51,Lohianagar"></property>
<property name="city" value="Ghaziabad"></property>
<property name="state" value="UP"></property>
<property name="country" value="India"></property>
</bean>
<bean id="obj" class="com.w3codebox.Employee">
<property name="id" value="1></property>
<property name="name" value="Sachin Yadav"></property>
<property name="address" ref="address1></property>
</bean>
</beans>

Test.java

This class retrieves a Bean from applicationContext.xml file and calls the displayInfo() method.

package com.w;3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class Test {
public static void main(String[] args) {
    Resource r=new ClassPathResource("applicationContext.xml");
    BeanFactory factory=new XmlBeanFactory(r);
    Employee e=(Employee)factory.getBean("obj");
    e.displayInfo();