在Spring上下文中导入/过滤属性

我正在使用Java 1.6和Spring 3.1.1。 我正在尝试将外部属性文件读入Spring上下文。 这是关键点:第一个属性文件包含下一个属性文件的路径。 例:

$ {user.home}中的第一个属性文件:

resource.dir=C:/users/smith config.dir=${resource.dir}/configuration 

第二个属性文件$ {config.dir}(在第一个属性文件中定义):

 datasource.name=jdbc:mysql://dbserver:3306/test datasource.prop1=etc datasource.prop2=etc 

所以我需要读取第一个文件,处理这些属性,并使用它们来获取第二个文件。

使用Spring PropertyPlaceholderConfigurer只能将我带到第一个文件。 我已经读过你在app环境中只能有一个PropertyPlaceholderConfigurer,这似乎是真的。 [编辑:请参阅https://jira.springsource.org/browse/SPR-6428获取解释。]

谁知道最好的方法呢?

编辑:如果您正在运行ant的构建,这显然很容易,不幸的是我的项目使用Maven。 您可以使用PROPERTY标记执行第一步,并“自动”解析下一步的所有内容,允许您将类路径设置为$ {cfg.dir}目录等。然后,您可以“正常”读取属性这些目录。 我希望Spring或Maven允许我使用相同的function,但还没有找到答案……

ANT示例:

          

如果资源目录只是用户的主目录,则可以在xml中执行以下操作…

    

或者,如果您希望在代码中执行此操作,还可以使用@PropertySource批注

这是有效的,因为在Spring 3.1中,PropertySource抽象统一了系统属性,环境变量以及属性文件的属性。 user.home是一个系统属性。