gpt4 book ai didi

java - 使用系统管理员定义的属性配置基于 Spring 的 servlet

转载 作者:行者123 更新时间:2023-11-28 22:15:15 24 4
gpt4 key购买 nike

我有一个基于 Spring 和应用程序上下文的 Web 应用程序,applicationContext.xml 和 myServlet-servlet.xml 包含应由系统管理员在部署中配置的设置。

无需编辑 WAR 内容即可更改 [数据库服务器详细信息、远程 Web 服务端点等] 等设置的最佳方法是什么?

Spring 提供了 PropertyPlaceholderConfigurer它可以在 beans 配置中使用,但我认为这将需要属性文件的绝对路径,我想避免这种情况,如果没有其他原因,除了允许同一 servlet 的多个实例在同一台机器。

也许还有使用 JNDI 配置资源的选项,尽管似乎没有 BeanFactoryPostProcessor。实现开箱即用,因此这可能不是处理它的好方法。

处理此类要求的标准最佳做法是什么(如果有的话)?

相关的 SO 条目:

How can I specify system properties in Tomcat configuration on startup?

最佳答案

您也可以使用基于文件的解决方案来实现这一点。在每个环境中定义一个环境名称系统属性。然后使用此名称加载外部属性文件。下面的示例加载一个默认集,然后用特定于环境的集覆盖该默认集。

<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>classpath:site/properties/default/placeholder.properties
</value>
<value>file:///site/properties/${env.name}/placeholder.properties
</value>
</list>
</property>
</bean>

改编自,我的回答here

关于java - 使用系统管理员定义的属性配置基于 Spring 的 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1345980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com