当前位置: 首页 > 知识库问答 >
问题:

Tomcat上下文-Spring webapp中使用PropertyPlaceholder时忽略的参数

子车凌龙
2023-03-14

我以前使用了类org.springframework.web.context.support.ServletContextPropertyPlaceHolderConfigurer来从服务器的文件系统加载属性文件。我定义了以下bean:

<bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">
    <property name="locations" value="${config}"/>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
    <property name="searchContextAttributes" value="true"/>
    <property name="contextOverride" value="false"/>
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="searchSystemEnvironment" value="false"/>
</bean>

配置是启动Tomcat时传递的参数,即。

-Dconfig=/path/to/application.properties

对于webapp,我还有一个上下文文件:

<Context docBase="/path/to/application.war">
    <Parameter name="host" value="localhost" override="false"/>
    <Parameter name="port" value="8080" override="false"/>
</Context>

如果-dconfig参数指定的.properties文件包含其他bean引用的属性,则使用.properties文件中的值,否则使用上下文xml文件中的值。

这使得我可以在WAR中部署一组默认属性,如果需要,我可以指定.properties文件来覆盖特定的值。

<context:property-placeholder
        location="${config}"
        system-properties-mode="OVERRIDE"
        ignore-resource-not-found="true"
        ignore-unresolvable="true"/>

在使用这个新的属性占位符时,我如何让我的应用程序使用上下文参数?

谢了。

共有1个答案

谭景福
2023-03-14

概括地说,问题在于,在使用Spring3.1中引入的新属性占位符命名空间时,没有使用servlet上下文文件中的上下文参数来解析占位符。

我已经想出了一个解决办法,下面是

<context:property-placeholder location="${config}" local-override="true" ignore-resource-not-found="true"/>

我可以使用JVM arg在本地文件系统上指定一个或多个*.properties文件,例如:

-Dconfig=/path/app.properties

如果app.propertiesweb.xml中存在相同的属性键,则使用app.properties中的值。

 类似资料:
  • 我有几个Spring Boot应用程序的实例部署在一个独特的Tomcat中。每个应用程序都配置了一个context.xml文件,该文件包含客户代码 有什么方法可以使这个日志返回配置工作吗? 在application.properties中定义的属性的使用效果很好(我将logback.xml重命名为logback-spring.xml)。在我看来,Spring boot在初始化日志记录之前并没有在E

  • @value(“${recaptcha.private.key}”)私有字符串recaptChaprivateKey; 和我的web.xml(更新)

  • 我正在尝试使用tomcat设置kerberos/spnego身份验证。我在tomcat目录下添加了一个krb5.conf文件,在SpnegoFilterConfig中读取值并设置java.security.krb5.conf,但是似乎没有考虑到这一点。无论文件是否存在,我都会得到相同的结果。 如果我把jce安全文件放在lib/security中,我会得到 然而,无论我是否拥有krb5.conf,这

  • 我在Visual Studio C#IDE中定义了一个ContextMenuStri上下文菜单,并对程序进行编码,以便当用户右键单击屏幕上的一个对象时,上下文菜单成功弹出。用户可以从上下文菜单中选择一个项目,代码成功确定用户选择了哪个上下文菜单项。到目前为止还不错。问题是上下文菜单接受右键单击作为选择上下文菜单项的机制。当我不小心双击右键单击屏幕上的一个对象时,我注意到了这一点...菜单在第一次单

  • 有什么办法能做到这一点吗? 谢谢!

  • 我的函数包括不同的javax查询注释,例如:、、等。。 调用joinPoint时有没有排除这些参数的方法。getArgs()? 例子: 我想这样做的原因是我有几个URL,同时将大约10%标记为持久性。这意味着我希望将输入数据保存在某个持久服务中。查询