【问题标题】:global properties in spring春季全局属性
【发布时间】:2010-11-20 21:41:02
【问题描述】:

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

下面的例子最能说明我需要什么——我想定义属性 FOO 一次,然后在我的各种 定义中多次引用它:

<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>

任何意见将不胜感激。
谢谢,凯文。

【问题讨论】:

    标签: spring


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您只需要在 xml 文件中定义它们并且从不更改它们(就像您更改配置选项,例如端口或 ip),您可以使用给定属性创建一个 String 类的 bean,然后编写.创建 String 类的 bean 不是最直接的事情,但它是可行的。

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

      【讨论】:

        【解决方案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}

        【讨论】:

        • 我不相信这个现实有效。 documentation 建议它是列出属性文件位置的简写。
        猜你喜欢
        • 2013-12-22
        • 2016-08-06
        • 2014-02-02
        • 2012-12-13
        • 2017-11-30
        • 2021-05-12
        • 2019-03-31
        相关资源
        最近更新 更多