我想将参数传递给Spring Context.xml中另一个bean引用的bean。它甚至可能吗?
注意:从不同的bean引用时,DISCARD bean将具有不同的值。
<bean id="dropBadTimestampFilter" class="TimestampRangeMatcherModifier">
<constructor-arg index="0" value="_TIME"/>
<constructor-arg index="1" ref="DISCARD" /> <!--Want to pass a prameter value to this-->
</bean>
<bean id="DISCARD" class="SettingModifier">
<property name="fields">
<map>
<entry key="_ORG" value="CONSTANT"/>
<entry key="CAUSE" value="______"/> <!-- Want to be passed from bean referring it-->
</map>
</property>
</bean>
有没有一种方法可以使用Spring表达式语言使用bean来引用bean,以便以下方法可行:
<bean id="DISCARD" class="SettingModifier">
<property name="fields">
<map>
<entry key="_ORG" value="CONSTANT"/>
<entry key="CAUSE" value="#{dropBadTimestampFilter.CAUSE}"/> <!-- Can this bean get reference of all the beans using it and not only dropBadTimestampFilter. -->
</map>
</property>
</bean>
答案 0 :(得分:0)
基本上,如果它具有不同注入的不同属性,那么您将使该bean成为原型bean。然后,在"CAUSE"
bean的@PostConstruct
方法中设置TimestampRangeMatcherModifier
键的值。在XML中,您可以使用init-method
标记的bean
属性定义此类方法。
另一种方法是通过就地声明bean,如下所示:
<bean id="dropBadTimestampFilter" class="TimestampRangeMatcherModifier">
<constructor-arg index="0" value="_TIME"/>
<constructor-arg index="1">
<bean class="SettingModifier"> <!-- no need of id here -->
<property name="fields">
<map>
<entry key="_ORG" value="CONSTANT"/>
<entry key="CAUSE" value="______"/>
</map>
</property>
</bean>
</constructor-arg>
</bean>