Spring - 是否有可能在属性文件中递归地解析属性(例如环境变量)?

时间:2017-10-24 21:19:54

标签: java spring environment-variables spring-properties

我正在使用@PropertySourcePropertySourcesPlaceholderConfigurer来加载我的属性文件:

@Configuration
@PropertySource("classpath:app.properties")
class MyApp {
    @Bean
    public PropertySourcesPlaceholderConfigurer PropertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }
}

app.properties中,我希望:

database.dataSource.url=jdbc:postgresql://localhost:${db-port:5432}/mydb

此处,数据库的端口要么从属性db-port解析,要么默认为5432.

如果需要,这将允许我使用-Ddb-port=9876标志生成我的应用程序。如果未设置此标志,则应采用app.properties中所写的默认端口。