在tomcat 7上部署应用程序时,在Spring中访问环境/系统变量

时间:2012-07-31 14:45:15

标签: spring deployment tomcat7 environment

我的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>

我做了以下

  1. 在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>
    
         

  2. 在tomcat7 / conf / context.xml

    中设置以下内容
    <Environment name="env" value="dev" type="java.lang.String" override="false"/>
    
  3. 设置CATALINA_OPTS和JAVA_OPTS

    echo $CATALINA_OPTS  =   -Denv=dev
    echo $JAVA_OPTS  =       -Denv=dev
    
  4. 我使用命令启动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'
    

    我做错了什么?

2 个答案:

答案 0 :(得分:1)

我能够通过在tomcat7 / conf中设置catalina.properties中的变量来解决问题

env = dev

答案 1 :(得分:0)

升级到Spring 3.1并使用Bean Profiles。