Reference another bean and set property
File: 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" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <bean id="encyclopedia" class="HardcodedEncyclopedia"/> <bean id="oracle" class="BookwormOracle"> <property name="encyclopedia" ref="encyclopedia"/> </bean> </beans> File: Main.java import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Main { public static void main(String[] a) { XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("context.xml")); Oracle oracle = (Oracle) bf.getBean("oracle"); System.out.println("Meaning of life is " + oracle.defineMeaningOfLife()); } } interface Oracle { String defineMeaningOfLife(); } interface Encyclopedia { Long findLong(String entry); } class BookwormOracle implements Oracle { private Encyclopedia encyclopedia; public String defineMeaningOfLife() { Long ageOfUniverse = this.encyclopedia.findLong("AgeOfUniverse"); Long constantOfLife = this.encyclopedia.findLong("ConstantOfLife"); return String.valueOf(ageOfUniverse / constantOfLife); } public void setEncyclopedia(Encyclopedia encyclopedia) { this.encyclopedia = encyclopedia; } } class HardcodedEncyclopedia implements Encyclopedia { private Map<String, Long> entryValues = new HashMap<String, Long>(); public HardcodedEncyclopedia() { this.entryValues.put("AgeOfUniverse", 13700000000L); this.entryValues.put("ConstantOfLife", 326190476L); } public Long findLong(String entry) { return this.entryValues.get(entry); } }