春天的全球物业

时间:2009-08-19 10:28:18

标签: spring

是否可以在spring上下文文件中定义,以及一个或多个属性 可以在< bean>中访问元素。

下面的例子说明了我最需要的东西 - 我想要定义属性FOO一次,然后在我的各种< bean>中多次引用它。定义:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  <properties>
    <property name="FOO" value="BAR">
  </properties>

  <bean name="TEST" class="mytest">
    <property name="MYFOO" value="${FOO}"/>
  </bean>
  <bean name="TEST1" class="mytest1">
    <property name="MYFOO" value="${FOO}"/>
  </bean>

</beans>

非常感谢任何意见 谢谢,凯文。

3 个答案:

答案 0 :(得分:9)

您可以使用快照命名的PropertyPlaceHolderConfigurer来执行此操作。有关spring文档中的示例,请参阅here。您没有在spring beans文件中定义属性值本身,而是将它们外部化为.properties文件。

我怀疑,您可以使用PropertyPlaceHolderConfigurer或其中一个兄弟来注入Spring文件中定义的Properties对象,但这将是一个相当冗长的解决方案。

答案 1 :(得分:4)

如果您只需要在xml文件中定义它们并且永远不会更改它们(就像您要更改配置选项,比如端口或ip),您可以使用给定属性创建类String的bean然后写入。创建类String的bean不是最直接的东西,但它是可行的。

如果你想要更复杂的东西(比如你想要一个配置文件驻留在你的bean定义的xml的jar之外),你可以查看PropertyPlaceholderConfigurer类。

答案 2 :(得分:3)

刚刚找到了一种在spring XML文件中执行此操作的方法,不需要外部属性文件(如果需要,可以补充一个)

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="properties">
        <util:properties>
            <prop key="foo1">bar1</prop>
            <prop key="foo2">bar2</prop>
        </util:properties>
    </property>
</bean>

然后你就像正常那样引用它们,${foo1}需要