0

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

我使用命令启动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'

我究竟做错了什么??

4

2 回答 2

1

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

环境=开发

于 2012-08-01T12:11:01.140 回答
0

升级到 Spring 3.1 并使用 Bean Profiles。

于 2012-08-02T20:43:56.907 回答