Mega Code Archive

 
Categories / Java / Spring
 

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);   } }                     Spring-XMLBasedBeanConfiguration.zip( 2,600 k)