Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring中读取具有相同键的多个属性?_Java_Spring - Fatal编程技术网

Java 如何在Spring中读取具有相同键的多个属性?

Java 如何在Spring中读取具有相同键的多个属性?,java,spring,Java,Spring,我在这里面临一个简单的问题。我有两个属性文件要读取以创建两个数据源。然而,这些属性文件具有完全相同的键!我能够通过以下方式读取这两个文件: <context:property-placeholder location="classpath:foo1.properties,classpath:foo2.properties"/> 但我无法访问正确的值: <bean id="myDataSource" class="org.apache.commons.dbcp.B

我在这里面临一个简单的问题。我有两个属性文件要读取以创建两个数据源。然而,这些属性文件具有完全相同的键!我能够通过以下方式读取这两个文件:

<context:property-placeholder 
    location="classpath:foo1.properties,classpath:foo2.properties"/>

但我无法访问正确的值:

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${driver}" /> <!-- Which one? -->
    <property name="url" value="${url}" />                <!-- Which one? -->
    ...
</bean>

...
如何读取属性,以便使用变量(如
${foo1.driver}
)并知道调用的是哪一个

谢谢你的帮助

试试这样的方法(未经测试):


类路径:foo1.properties
类路径:foo2.properties

我想我应该做的是扩展PropertyPlaceHolderConfigure

在我看来,你必须重写这个方法

我要做的是添加一个属性“前缀”

public void setPrefixes(列出前缀){
this.prefixes=前缀;
}
并在读取资源的属性时迭代这些前缀

<bean id="config1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="ignoreUnresolvablePlaceholders" value="true"/>
       <property name="placeholderPrefix" value="${foo1."/>
       <property name="locations">
        <list>
          <value>classpath:foo1.properties</value>
        </list>
      </property>
    </bean>

    <bean id="config2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="ignoreUnresolvablePlaceholders" value="false"/>
       <property name="placeholderPrefix" value="${foo2."/>
       <property name="locations">
        <list>
          <value>classpath:foo2.properties</value>
        </list>
      </property>
    </bean>
public void setPrefixes(List<String> prefixes){
    this.prefixes = prefixes;
}