Wie greifen Sie auf eine Eigenschaft einer Bean in einer Feder XML-Konfigurationsdatei zu lesen?

StackOverflow https://stackoverflow.com/questions/142740

  •  02-07-2019
  •  | 
  •  

Frage

Ich möchte so etwas wie die folgenden im Frühjahr tun:

<beans>
    ...
    <bean id="bean1" ... />
    <bean id="bean2">
        <property name="propName" value="bean1.foo" />
...

Ich würde denken, dass dies den getFoo () -Methode von Bean1 zugreifen würde und die setPropName () -Methode von Bean2 nennen, aber das scheint nicht zu funktionieren.

War es hilfreich?

Lösung

Was ich verstanden:

  1. Sie haben eine Bohne (Bean1) mit einem Eigenschaft namens "foo"
  2. Sie haben eine andere Bohne (Bean2) mit einem Eigentum „propName“ genannt, weichen auch hat die gleich „foo“ hat, dass in Bean1.

, warum dies nicht zu tun:

<beans>
...
<bean id="foo" class="foopackage.foo"/>
<bean id="bean1" class="foopackage.bean1">
  <property name="foo" ref="foo"/>
</bean> 
<bean id="bean2" class="foopackage.bean2">
  <property name="propName" ref="foo"/>
</bean>
....
</beans>

Dadurch, Ihr Bean2 ist nicht gekoppelt wie in Ihrem Beispiel Bean1. Sie können Bean1 und Bean2 ohne einander ändern zu beeinflussen.

Wenn Sie wirklich müssen die Injektion Sie vorgeschlagen tun, können Sie:

<util:property-path id="propName" path="bean1.foo"/>
scroll top