我在一个 Java Web 项目中工作。我需要根据环境更改文件“jdbc.properties”和“log4j.properties”的文件夹,因为测试、演示和发布对这些文件有不同的值。
我有这个文件夹和子文件夹:
c:\myProject\conf\dev c:\myProject\conf\test c:\myProject\conf\demo
我需要将不同的 jdbc.properties 和 log4j.properties 文件放在每个文件夹中
c:\myProject\conf\dev\log4j.properties c:\myProject\conf\dev\jdbc.properties
c:\myProject\conf\test\log4j.properties c:\myProject\conf\test\jdbc.properties
c:\myProject\conf\demo\log4j.properties c:\myProject\conf\demo\jdbc.properties
这三个项目在同一个服务器和同一个 Apache 中(它是一个 Web 项目)
首先,我进行了一些更改以使用 Windows 系统变量来获取父文件夹 (c:\myProject)。为此,我在 Spring appContext 文件上做了这个:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>file:${PARENT_FOLDER}/conf/dev/jdbc.properties</value>
</property>
</bean>
“PARENT_FOLDER”在 Windows 环境变量/系统变量中定义
这些更改工作正常。
但是,正如你所看到的,我总是在“/conf/dev”上寻找文件
我需要使动态成为路径的“开发”部分。
我不能使用 Windows 环境变量/系统变量,因为这 3 个环境部署在同一台服务器上。
我正在尝试在 web.xml 上使用“属性”(使用),但我不知道如何在我的 Spring appContext 文件中找到该属性。
我这样定义属性:
<env-entry>
<env-entry-name>ENVIRONMENT</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Dev</env-entry-value>
</env-entry>
但我不知道如何在 Spring 上访问“ENVIRONMENT”属性
我不知道该怎么办。我有点绝望
有人能帮我吗?
感谢并为我糟糕的英语感到抱歉