【问题标题】:How to retrieve context parameters in Spring 3.1 xml context如何在 Spring 3.1 xml 上下文中检索上下文参数
【发布时间】:2013-01-15 10:11:11
【问题描述】:

似乎在春季对属性支持进行了几次迭代,很难说出最佳实践是什么,并且手册是从熟悉其他迭代的人的角度编写的。我觉得这应该是一个简单而常见的要求,但考虑到它有多难,如果有更惯用的方法,请纠正我。

我想要的是基于客户端使用 tomcat 描述符设置的上下文属性将附加属性文件传递给我的 spring web 应用程序

<Context path="/foo" reloadable="true">
  <Parameter name="foo.config" value="file:${catalina.base}/conf/foo.properties"/>
</Context>

在春天,我有这个实时个人资料

<beans profile="live">
            <context:property-placeholder location="classpath:timetabling.live.properties,${timetabling.config}" 
    ignore-resource-not-found="true" />
</beans>

所以我假设这不起作用,因为我正在尝试使用占位符配置占位符支持。但是,如果我使用系统属性,那么这可以正常工作。我知道 Spring 3.1 已经支持系统和环境属性,所以我想我的问题是 如何在解决占位符之前通过上下文感知来增强这种支持?

--更新--

查看http://blog.springsource.org/2011/02/15/spring-3-1-m1-unified-property-management/,特别是在脚注1,我希望有一个DefaultWebEnvironment,它应该已经可以访问上下文初始化参数。现在我更困惑了,有人能给我提供一个上下文属性检索的具体例子吗?在这一点上,我觉得我已经阅读了所有可用的 javadoc,但它们并没有帮助。

【问题讨论】:

    标签: spring tomcat servlets properties


    【解决方案1】:

    &lt;context:property-placeholder /&gt; 设置一个PropertyPlaceholderConfigurer,它从.properties、系统属性和环境变量中读取。然而,Tomcat context.xml 设置了一个 servlet 上下文初始化参数。所以你需要的是ServletContextPropertyPlaceholderConfigurer

    【讨论】:

    • 是的,我已经调查过了,但文档声称“在 Spring 3.1 中支持 PropertySourcesPlaceholderConfigurer 和 StandardServletEnvironment”。然而,关于如何替换该功能的信息很少。如果真的没有替代品,那么我想我可以使用它,但我对 3.1 解决方案感兴趣。
    • 好的,在这种情况下,您需要PropertySourcesPlaceholderConfigurerWebApplicationContext。 (我没有尝试过,但这是我的理解)。
    猜你喜欢
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2014-12-25
    • 2015-09-13
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多