在Spring中重用bean定义

时间:2012-03-08 20:27:30

标签: java xml spring

我们的项目有两个应用程序上下文:

  • application-context.xml
  • 应用程序上下文的test.xml

目前,每个文件都有重复的bean定义。因此,例如,以下bean将位于每个应用程序上下文中:

<bean id="foo "class="com.foo">
     <property name="bar">
          <ref local="bar"/>
     </property>
</bean>

计划是为bean定义创建另一个文件,以便我们可以重用bean,但是,如果我们将上面的xml段放到它自己的文件中,就不会引用bar

有一种简单的方法可以解决这个问题吗?

请注意,bar在每个应用程序上下文中都会有所不同。

谢谢!

2 个答案:

答案 0 :(得分:3)

<ref local="bar"/>具有特定含义 - 这意味着bar必须在同一个文件中定义。在你的情况下,这太严格了,所以稍微放松一下:

<bean id="foo "class="com.foo">
     <property name="bar" ref="bar"/>
</bean>

然后使用<import resource="...">在需要的地方导入此文件。

这样,bar必须仍然存在,但它可以存在于上下文的任何文件中,或者存在于任何父上下文中。

答案 1 :(得分:1)

当然,请使用导入到两个xml文件中的公共上下文文件。

<import resource="/common"/>

请参阅4.2.2.1. Composing XML-based configuration metadata