Java 动态更改jdbc.properties和log4j.properties的文件目录
我在一个JavaWeb项目中工作。 我需要根据环境更改文件“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文件上做了如下操作:Java 动态更改jdbc.properties和log4j.properties的文件目录,java,spring,tomcat,web.xml,Java,Spring,Tomcat,Web.xml,我在一个JavaWeb项目中工作。 我需要根据环境更改文件“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
<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}/conf/dev/jdbc.properties
“父文件夹”是在Windows环境变量/系统变量上定义的
这些改变很有效
但是,正如您所看到的,我总是在“/conf/dev”上查找文件
我需要使动态成为路径的“dev”部分
我无法使用Windows环境变量/系统变量,因为这3个环境部署在同一台服务器上
我试图在web.xml上使用一个“属性”(using),但我不知道如何在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>
环境
java.lang.String
发展
但我不知道如何访问Spring上的“环境”属性
我不知道该怎么办。我有点绝望
有人能帮我吗
感谢并为我糟糕的英语道歉你考虑过使用吗
使用JNDI,您将在tomcat本身内部定义db连接属性。这样,您的spring配置独立于环境,您可以在所有环境上部署相同的war。另见
如果需要在本地运行,则始终可以使用“新建”功能
另一个选项(如果JNDI不是一个选项,并且假设您使用maven)是maven replacer插件,您将在构建时在该插件中生成db.properties。但我至少需要为JDBC和Log4j这样做。我需要这两个文件的解决方案,也许将来还会有另一个文件。无论如何,最好在war之外部署log4j.properties。如果这不是您想要的,那么您可以在启动Tomcat时考虑设置JVM属性并在Log4j.Realts中重用这些属性,或者使用不同的Log4j.Fielts并告诉Tomcat使用JVM属性<代码> > DLog4j.Stase= Log4j.xml < /Comp>来使用,这就是我正在尝试做的。我有外部的“jdbc.properties”和“log4j.properties”文件。我想你还不明白我在说什么,我仍然会对数据库属性使用JNDI。但是上面提到的JVM选项也应该可以工作。你能给我一个JVM属性的例子吗?谢谢