0

我有一个 bean,它有一个我想设置的字符串属性,但我想从文件中设置它而不更改 bean 代码。豆子是这样的。

public class SomeBean {
    public void setSomeProperty(String string) { ... }
}

我在 beans.xml 文件中寻找类似的东西

<beans>
   <bean class="SomeBean">
      <property name="someProperty">
         <util:string src="classpath:foo.txt" />
      </property>
   </bean>
</beans>
4

2 回答 2

1

尝试使用PropertyPlaceholderConfigurer从属性文件加载值:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="ignoreResourceNotFound" value="true" />
        <property name="locations">
            <list>
                <value>classpath:foo.properties</value>
            </list>
        </property>
        </bean>

<bean class="SomeBean">
       <property name="someProperty" value="${myBean.someProperty}" />

然后,在 foo.properties 文件中,将属性设置为所需的任何值:

myBean.someProperty = value

希望这可以帮助

于 2013-02-13T08:22:51.650 回答
0

我找到了一种使用 Guava 类的方法,虽然它看起来很糟糕。

(value属性都在一行)

<property name="someProperty"
  value="#{ T(com.google.common.io.Resources).toString(
              T(com.google.common.io.Resources).getResource('foo.txt'),
              T(java.nio.charset.Charset).forName('UTF-8')) }"/>

希望有人能找到更好的答案。

于 2013-02-13T08:22:51.960 回答