File: injectdemo2-context.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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="name" class="java.lang.String">
<constructor-arg value="My Value 1"/>
</bean>
<bean id="injectSimpleParent" class="InjectSimpleDemo">
<property name="name" ref="name"/>
<property name="age" value="2"/>
<property name="height" value="0.8"/>
<property name="isProgrammer" value="false"/>
<property name="ageInSeconds" value="63072000"/>
</bean>
</beans>
File: injectdemo3-context.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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="name" class="java.lang.String">
<constructor-arg value="My value"/>
</bean>
<bean id="injectSimpleChild" class="InjectSimpleDemo">
<property name="name" ref="name"/>
<property name="age" value="2"/>
<property name="height" value="0.8"/>
<property name="isProgrammer" value="false"/>
<property name="ageInSeconds" value="63072000"/>
</bean>
<bean id="injectSimpleChild2" class="InjectSimpleDemo">
<property name="name">
<ref parent="name"/>
</property>
<property name="age" value="2"/>
<property name="height" value="0.8"/>
<property name="isProgrammer" value="false"/>
<property name="ageInSeconds" value="63072000"/>
</bean>
</beans>
File: Main.java
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class Main {
public static void main(String[] args) {
XmlBeanFactory parent = new XmlBeanFactory(new ClassPathResource("injectdemo2-context.xml"));
XmlBeanFactory child = new XmlBeanFactory(new ClassPathResource("injectdemo3-context.xml"), parent);
System.out.println(parent.getBean("injectSimpleParent"));
System.out.println(child.getBean("injectSimpleChild"));
System.out.println(child.getBean("injectSimpleChild2")); }
}
class InjectSimpleDemo {
private String name;
private int age;
private float height;
private boolean isProgrammer;
private Long ageInSeconds;
public void setAgeInSeconds(Long ageInSeconds) {
this.ageInSeconds = ageInSeconds;
}
public void setIsProgrammer(boolean isProgrammer) {
this.isProgrammer = isProgrammer;
}
public void setAge(int age) {
this.age = age;
}
public void setHeight(float height) {
this.height = height;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return String.format("Name: %s\nAge: %d\nAge in Seconds: %d\nHeight: %g\nIs Programmer?: %b",
this.name, this.age, this.ageInSeconds, this.height, this.isProgrammer);
}
}
Download: Spring-HierarchicalBeanFactoryDemo.zip( 2,600 k)