spring: set property of one bean by reading the property of another bean?

前端 未结 3 2159
别跟我提以往
别跟我提以往 2020-12-05 13:22

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);
}
         


        
相关标签:
3条回答
  • 2020-12-05 14:00

    If you are trying to do the same for a constructor then do this.

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
                <constructor-arg type="javax.sql.DataSource" value="#{jdbc.dataSource}">            
                </constructor-arg>
    </bean>
    

    Here "jdbc" is as mentioned below that has property "dataSource" with getter and setter and initilized as:

    <bean id="jdbc" class="com.la.activator.DataSourceProvider">
        <property name="myDataSourcePool" ref="dsPoolService"/>
    </bean>
    
    0 讨论(0)
  • 2020-12-05 14:15

    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

    0 讨论(0)
  • 2020-12-05 14:18

    There are a couple of ways. Here is one:

    <bean id="b" class="B"/>
    <bean id="a" class="A">
        <property name="list">
            <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
                <property name="targetObject" ref="b"/>
                <property name="propertyPath" value="list"/>
            </bean>
        </property>
    </bean>
    

    Also see the <util:property-path/> element

    0 讨论(0)
提交回复
热议问题