加载上下文时加载属性文件,将文件路径作为另一个属性文件的属性

时间:2014-04-16 02:49:15

标签: java spring

我有一种情况需要在我的系统中使用两个属性文件。

  1. System.properties

    key.supportiveFile=C:\keypath\supportive.properties 
    

    密钥路径,可以在类路径之外。我想保持这条路  Supportive.properties作为System.properties中的键。 supportive.properties文件有

  2. supportive.properties。

    Supportive.properties具有键key1,key2。 supportive.properties文件中的属性必须使用上下文加载。

  3. 理想情况下,我的属性文件将显示如下。

    supportive.properties
    key1=value1
    key2=value2
    

    在spring.xml中,我尝试加载supportive.properties并注入spring.xml中定义的key1和key2值,如下所示。

    我。加载属性文件

     <context:property-placeholder location="classpath:System.properties,file:${key.supportiveFile}"/>
    

    II。这是一个示例bean,我想把我的密钥注入bean。

        <bean id="helloWorldBean" class="com.sample.snippets.enterprise.services.HelloWorld">
             <property name="prefixProp" value="${key1}" />
             <property name="suffixProp" value="${key2}" /> 
        </bean>  
    

    服务器日志显示Could not resolve placeholder 'key.supportiveFile' in [file:${key.supportiveFile}]但它失败并且未加载supportive.property文件。

    请在技术上告知如何解决此问题。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

<context:component-scan base-package="com.foo.bar.config"/>

<context:property-placeholder location="file:${key.supportiveFile}" />

<bean id="helloWorldBean" class="com.sample.snippets.enterprise.services.HelloWorld">
    <property name="prefixProp" value="${key1}" />
    <property name="suffixProp" value="${key2}" /> 
</bean>

并在com.foo.bar.config内,您有以下类:

package com.foo.bar.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:/System.properties")
public class SpringConfig{

}

此方法的解释来自this JIRA issue