Java 上下文路径是否可用作占位符,用于定义属性文件的路径

Java 上下文路径是否可用作占位符,用于定义属性文件的路径,java,spring,tomcat,Java,Spring,Tomcat,让我们从一些上下文开始: Tomcat容器 战争自动部署 tomcat中没有Context.xml(至少现在还没有) 使用两个不同的上下文部署两个(相同的)war(ROOT.war、test.war,为什么每个功能分支不部署一个war) 对于这两场战争,某些属性应该不同(覆盖) 我在属性中使用类似的内容: <bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBe

让我们从一些上下文开始:

  • Tomcat容器
  • 战争自动部署
  • tomcat中没有Context.xml(至少现在还没有)
  • 使用两个不同的上下文部署两个(相同的)war(ROOT.war、test.war,为什么每个功能分支不部署一个war)
  • 对于这两场战争,某些属性应该不同(覆盖)
我在属性中使用类似的内容:

  <bean id="properties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="locations">
        <list>
            <value>classpath:internal-common.properties</value>
            <value>classpath:${server.contextPath}/context.properties</value>
            <value>classpath:dev-overwrite.properties</value>
        </list>
    </property> 

classpath:internal-common.properties
类路径:${server.contextPath}/context.properties
类路径:dev-overwrite.properties

内部公用程序和开发人员覆盖按预期工作。 我找不到每个上下文具有外部属性的正确占位符(至少不是${server.contextPath})

我认为不起作用的问题有很多与此相关的答案:

  • 使用“env”。这两个WAR共享同一个tomcat实例,因此
  • 系统属性,原因相同
  • 有不同的属性名称,我不想因为我想要的是同一场战争
  • 使用tomcat提供的。如果我可以避免,这将简化我的过程
  • ExtendSpringProperties对象也可以工作,但我想确保它们不是更简单/最简单的解决方案。 理想情况下,任何带有contextPath信息的占位符都可以做到这一点

要做到这一点,您需要Spring的支持,容器不参与此交互。(我不确定Spring是否有这样的支持;我只是提到容器没有涉及。)谢谢,Spring支持似乎是通过stackOverflow实现的。在容器的帮助下,一个解决方案可以使用spring。在本例中,如果我使用Context.xml来设置属性,那么我就可以在spring应用程序中使用它。但是,由于不同的原因,如autodeploy,如果可能的话,我宁愿避免使用这个。