我不知道您使用的是什么版本的 Tomcat,但在 Tomcat 7 中的 catalina.sh 文件中,您可以指定变量 CATALINA_OPTS,此变量将传递给 jvm。
但也许设置环境变量并不是实现目标的最佳方式。也许最好是创建单独的“app.properties”文件,并将其包含在 applicationContext 中,如下所示:
<context:property-placeholder location="classpath*:app.properties" />
以及 catalina.sh 的解决方案
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
# "run" or "debug" command is executed.
# Include here and not in JAVA_OPTS all options, that should
# only be used by Tomcat itself, not by the stop process,
# the version command etc.
# Examples are heap size, GC logging, JMX ports etc.
例子:
CATALINA_OPTS="-Dfolder=Dev"
编辑:
对于 Windows,它应该类似于set CATALINA_OPTS="-Dfolder=Dev"
编辑:
在 Spring 配置中,您可以像 ${propertyname} 一样使用系统属性,也可以包含带有属性定义的文件,with context:property-placeholder
,并且在该文件中定义的所有属性也可以在配置中使用。
例如,您有基本集属性:config.properties,以及带有数据库连接设置的文件集(DEV.properties、UAT.properties、PROD.properties)。那么,如何为不同的环境包含不同的属性呢?可以通过多种方式完成,例如,在 catalina.bat 中设置系统属性
set CATALINA_OPTS="-Dbuild=DEV"
并在 applicationConfig.xml
<context:property-placeholder location="classpath*:${build}.properties, classpath*:config.properties" />
或者,您可以创建不同的构建配置,并在最终的 WAR 中为每个构建配置仅包含一个属性(DEV、UAT、PROD)。在 applicationConfig 中设置如下:
<context:property-placeholder location="classpath*:*.properties" />