Java Main类在运行时覆盖属性文件

时间:2014-09-04 09:07:13

标签: java spring maven properties jar

我正在使用Apache Maven和Spring。在src / main / resources文件夹中,我有一个属性文件。这些属性值可以具有不同的值。

我正在使用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 个答案:

答案 0 :(得分:1)

您可以将测试属性文件放在src/test/resources/中。在测试类中,它将使用此位置的属性文件。

放置在上面位置的

属性文件将不包含在最终构建的类路径中。

使用src/main/resources在主程序中放置您想要的资源文件