Java – spring: set property of one bean by reading the property of another bean

dependency-injectionjavaspring

Is it possible to set the property of one bean by reading the property of another bean? For instance, suppose I had:

class A {
   void setList(List list);
}

class B {
   List getList();
}

I would like Spring to instantiate both classes, and call A's setList method, passing in the result of calling B's getList method. The Spring configuration might look something like:

<bean id="b" class="B"/>
<bean id"a" class="A">
    <property name="list" ref="b" ref-property="list"/>
</bean>

Alas, this made-up XML does not work.

Why not just inject B into A? Because I do not want to introduce the extra dependency. A is only dependent List, not on B.

Best Answer

in addition to @Kevin's answer if you are using spring 3.0 it is possible to do this with the new spring expression language

<bean id="a" class="A">
    <property name="list"
        value="#{b.list}"/>
</bean>

spring 3.0 documentation