【发布时间】:2012-08-14 17:52:50
【问题描述】:
我使用的是 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 只会让我进入第一个文件。我读到您的应用程序上下文中只能有一个 PropertyPlaceholderConfigurer,这似乎是真的。 [编辑:请参阅https://jira.springsource.org/browse/SPR-6428 以获得解释。]
有人知道最好的方法吗?
编辑:如果您在 ant 中运行构建,这显然很容易做到,不幸的是我的项目使用 Maven。您使用 PROPERTY 标记执行第一步,它“自动”解析下一步的所有内容,允许您将类路径设置为 ${cfg.dir} 目录等。然后您可以“正常”从这些目录。我希望 Spring 或 Maven 能够为我提供相同的功能,但还没有找到答案......
ANT 示例:
<property file="${user.home}/global.properties" />
<target name="run-some-stuff">
<java classname="com.mystuff.App" failonerror="true" fork="yes">
<classpath>
<path location="${cfg.dir}" />
<path location="${resource.dir}" />
</classpath>
</java>
</target>
【问题讨论】:
-
这可能对您没有帮助,但是是可以有多个占位符配置器;您可以为每个配置器分配不同的占位符前缀。
-
没错,但在这种情况下这对我没有帮助。我在这里找到了限制的解释:jira.springsource.org/browse/SPR-6428