Sunday 6 September 2015

Java Source World: Spring Framework - Setter Injection with Dependent Object Example

Setter Injection with Dependent Object Example


 Setter Injection with Dependent Object Example


Like Constructor Injection, we can inject the dependency of another bean using setters. In such case, we use property element. Here, our scenario is Employee HAS-A Address. The Address class object will be termed as the dependent object. Let's see the Address class first:
Address.javaThis class contains four properties, setters and getters and toString() method.
    package com.springexample;    
    public class Address {
    private String addressLine1,city,state,country;
       //getters and setters
       public String toString(){
        return addressLine1+" "+city+" "+state+" "+country;
    }
Employee.javaIt contains three properties id, name and address(dependent object) , setters and getters with displayInfo() method.
    package com.springexample;    
    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:The ref attribute of property elements is used to define the reference of another bean.
    <?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="address1" class="com.springexample.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.springexample.Employee">
    <property name="id" value="1"></property>
    <property name="name" value="Sachin Yadav"></property>
    <property name="address" ref="address1"></property>
    </bean>    
    </beans>

Test.javaThis class gets the bean from the applicationContext.xml file and calls the displayInfo() method.
    package com.springexample;    
    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();        
    }
    

No comments:

Post a Comment