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

Spring Bean Inheritance

by using bean 's parent Properties, we can specify the inheritance relationship between Beans. In this case, the values of the parent bean will be inherited to the current bean.

Let's take a look at a simple example of inheriting from a bean.

Employee.java

This class includes three properties, three constructors, and the show() method used to display values.

package com.w3codebox;
public class Employee {
private int id;
private String name;
private Address address;
public Employee() {}
public Employee(int id, String name) {
    super();
    this.id = id;
    this.name = name;
}
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);
}
}

Address.java

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

applicationContext.xml

<?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="e1" class="com.w3codebox.Employee">
<constructor-arg value="101">/constructor-arg>
<constructor-arg value="Sachin"></constructor-arg>
</bean>
<bean id="address1" class="com.w3codebox.Address">
<constructor-arg value="21,Lohianagar"></constructor-arg>
<constructor-arg value="Ghaziabad"></constructor-arg>
<constructor-arg value="UP"></constructor-arg>
<constructor-arg value="USA"></constructor-arg>
</bean>
<bean id="e2" class="com.w3codebox.Employee" parent="e1">
<constructor-arg ref="address1">/constructor-arg>
</bean>
</beans>

Test.java

This class retrieves a Bean from the applicationContext.xml file and calls the show method.

package com.w3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
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 e1=(Employee)factory.getBean("e2");
    e1.show();
    
}
}