Est-il possible de définir la propriété d'un haricot en lisant la propriété d'un autre haricot? Par exemple, supposons que j'avais:
class A {
void setList(List list);
}
class B {
List getList();
}
J'aimerais que le printemps instantiaire à la fois des classes et appeler la méthode de layliste de la réalisation d'une méthode de getlist d'appel de B. La configuration du ressort pourrait ressembler à quelque chose comme:
<bean id="b" class="B"/>
<bean id"a" class="A">
<property name="list" ref="b" ref-property="list"/>
</bean>
Hélas, ce XML maquillé ne fonctionne pas.
Pourquoi ne pas simplement injecter b dans un? Parce que je ne veux pas introduire la dépendance supplémentaire. A n'est que la liste dépendante, pas sur B.
Il y a quelques façons. Voici un:
<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>
Voir aussi le <util:property-path/>
élément
Si vous essayez de faire la même chose pour un constructeur, faites cela.
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg type="javax.sql.DataSource" value="#{jdbc.dataSource}">
</constructor-arg>
</bean>
Ici "JDBC" est mentionné ci-dessous qui a la propriété "DataSource" avec getter et Setter et initié comme suit:
<bean id="jdbc" class="com.la.activator.DataSourceProvider">
<property name="myDataSourcePool" ref="dsPoolService"/>
</bean>