我的war文件有3个属性文件:test.properties,dev.properties和prod.properties。
我的申请上下文有以下内容
<bean id="local" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list><value>classpath:${env}.properties</value></list> </property> <property name="ignoreResourceNotFound" value="false" /> <property name="ignoreUnresolvablePlaceholders" value="false" /> <property name="searchSystemEnvironment" value="true" /> </bean>
我做了以下
在tomcat7 / conf / web.xml
中设置以下内容<env-entry> <env-entry-name>env</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <env-entry-value>dev</env-entry-value>
在tomcat7 / conf / context.xml
中设置以下内容<Environment name="env" value="dev" type="java.lang.String" override="false"/>
设置CATALINA_OPTS和JAVA_OPTS
echo $CATALINA_OPTS = -Denv=dev echo $JAVA_OPTS = -Denv=dev
我使用命令启动tomcat,sudo /etc/init.d/tomcat7 start
这不会加载我的任何变量。我还是得到了
Invalid bean definition with name 'local' defined in class path resource [applicationContext.xml]: Could not resolve placeholder 'env'
我做错了什么?
答案 0 :(得分:1)
我能够通过在tomcat7 / conf中设置catalina.properties中的变量来解决问题
env = dev
答案 1 :(得分:0)
升级到Spring 3.1并使用Bean Profiles。