2014-09-04 63 views
1

我正在使用Apache Maven和Spring。在src/main/resources文件夾中我有一個屬性文件。這些屬性值可以有不同的值。Java在運行時重寫屬性文件

我正在使用PropertyPlaceholderConfigurer。

@Configuration 
public class ResourceConfig { 

@Bean 
public PropertyPlaceholderConfigurer properties() { 
    PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); 
    ppc.setIgnoreResourceNotFound(true); 
    ppc.setLocations(new ClassPathResource[] {new ClassPathResource("propertiesFile")}); 
    return ppc; 
} 
} 

我在運行時替換這些值:

@Configuration 
public class DataSourceConfig { 

@Value("${jdbc.url}") 
private String jdbcUrlDefault; 
} 

這僅僅是一個樣品。我有一個主要方法:

public static void main(String[] args) { 
    // accept a properties file and replace those values defined in DataSourceConfig class 
} 

當Apache Maven構建應用程序時,屬性文件將位於類路徑中。屬性文件在單元測試期間使用。我想要介紹如何在主程序啓動生產之前用新的屬性文件替換屬性。

我見過一些Properties.load()的例子,但我不想這樣做。我想通過被替換的主程序接受一個屬性文件,所以Spring端啓動PropertyPlaceholderConfigurer。

這是如何實現的?

回答

1

您可以將您的測試屬性文件放入src/test/resources/。在測試類中,它將使用此位置的屬性文件。

位於上面位置的屬性文件將不會包含在最終構建的類路徑中。

使用src/main/resources的地方,你在主程序

+0

這我明白想要的資源文件,但這個想法是接受一個屬性在命令提示文件啓動Java時。我不想將生產屬性文件放在src/main/resources中。 – user 2014-09-04 09:16:00

+0

實際上可以做到嗎? – user 2014-09-04 10:22:41