我正在使用Java Web Project。 我需要根据环境更改文件“jdbc.properties”和“log4j.properties”的文件夹,因为测试,演示和发布对这些文件具有不同的值。
我有这个文件夹和子文件夹:
C:\ myProject的\ CONF \ dev的 C:\ myProject的\ CONF \测试 C:\ myProject的\ CONF \演示
我需要在每个文件夹中放入不同的jdbc.properties和log4j.properties文件
C:\ myProject的\ CONF \ dev的\ log4j.properties C:\ myProject的\ CONF \ dev的\ jdbc.properties
C:\ myProject的\ CONF \测试\ log4j.properties C:\ myProject的\ CONF \测试\ jdbc.properties
C:\ myProject的\ CONF \演示\ log4j.properties C:\ myProject的\ CONF \演示\ 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”
上找文件我需要动态路径的“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”属性
我不知道该怎么办。我有点绝望
有人可以帮助我吗?
谢谢,抱歉我的英语不好
答案 0 :(得分:0)
您是否考虑过使用JNDI?
使用JNDI,您将在tomcat中定义数据库连接属性。这样,您的弹簧配置与环境无关,您可以在所有环境中部署相同的战争。另请参阅this。
如果您需要在本地运行它,您可以随时使用“新”spring environment profiles功能。
其他选项(如果JNDI不是一个选项并且假设您使用maven)是maven replacer插件,您将在构建时生成db.properties。