将参数传递给构造函数中引用的 bean Spring
Passing a parameter to a bean referenced in a constructor in Spring
我想将参数传递给从 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>
基本上,如果该 bean 对于不同的注入具有不同的属性,则您必须将该 bean 设为原型 bean。然后,在 TimestampRangeMatcherModifier
bean 的 @PostConstruct
方法中设置 "CAUSE"
键的值。在 XML 中,您使用 bean
标记的 init-method
属性定义此类方法。
另一种方法是就地声明 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>
我想将参数传递给从 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>
基本上,如果该 bean 对于不同的注入具有不同的属性,则您必须将该 bean 设为原型 bean。然后,在 TimestampRangeMatcherModifier
bean 的 @PostConstruct
方法中设置 "CAUSE"
键的值。在 XML 中,您使用 bean
标记的 init-method
属性定义此类方法。
另一种方法是就地声明 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>