将自定义属性存储在applicationContext.xml Spring文件中

时间:2009-05-20 15:51:11

标签: spring properties

我需要为使用spring框架的Web应用程序存储一些配置参数。

通常我会使用configurationfile.properties文件,但我想知道我是否可以将这些值存储在applicationContext.xml文件中。

一种解决方法可能是创建一个JavaBean类来存储值,并使用spring构建该类,如下所示:

<bean id="configurationBean" class="mypackage.someClass">
 <property name="confValue1">
   <value>myValue1</value>
 </property>
 ....
</bean>

但我想知道是否有办法存储这些参数而无需创建该类。

提前致谢。


我认为符合我要求的最佳解决方案是将java.util.Properties实例用作Spring Bean。

谢谢大家。

4 个答案:

答案 0 :(得分:16)

这应该使用以下语法。

<bean id="props" class="java.util.Properties" >
    <constructor-arg>
        <props>
            <prop key="myKey">myValue</prop>
            <prop ...>
        </props>
    </constructor-arg>
</bean>

您正在利用java.util.Properties具有接受Properties对象的复制构造函数这一事实。

我为HashSet执行此操作,HashSet也有一个复制构造函数(就像HashMaps和ArrayLists一样)并且它运行良好。

答案 1 :(得分:1)

我认为使用Spring的PropertyPlaceholderConfigurer可以获得最佳效果,它允许您将常规.properties文件中的值映射到bean上定义的属性。

http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-placeholderconfigurer

该示例显示了如何直接在javax.sql.DataSource的实例上设置JDBC连接属性,从而无需中间的“配置bean”。

答案 2 :(得分:1)

Spring内置了对在应用程序上下文XML中指定属性的支持。请参阅Spring Reference文档的section 3.3.2.4

答案 3 :(得分:0)

最好的方法是使用spring PropertyPlaceholderConfigurer

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:yourconfigurationfile.properties</value>
        </list>
    </property>
</bean>

然后

<bean id="configurationBean" class="mypackage.someClass">
    <property name="confValue1">
        <value>${myvalue1}</value>
    </property>
    ....
</bean>  

并在yourconfigurationfile.properties

myvalue1= value1