我需要为使用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。
谢谢大家。
答案 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内置了对在应用程序上下文XML中指定属性的支持。请参阅Spring Reference文档的section 3.3.2.4。
答案 2 :(得分:1)
我认为使用Spring的PropertyPlaceholderConfigurer可以获得最佳效果,它允许您将常规.properties文件中的值映射到bean上定义的属性。
该示例显示了如何直接在javax.sql.DataSource的实例上设置JDBC连接属性,从而无需中间的“配置bean”。
答案 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