gpt4 book ai didi

spring - Spring 中的 PropertyPlaceHolder

转载 作者:行者123 更新时间:2023-12-02 05:45:11 26 4
gpt4 key购买 nike

我们在 spring 中访问 java 属性,如下所示:

<property name="fileSizeLimit" value="${someProperty}" />

bean 声明

int fileSizeLimit = 9999;

如果属性文件中缺少“someProperty”,如何设置默认值?

ATM,我们得到 NumberFormatException,因为 spring 使用属性名称“someProperty”调用 int-setter。设置属性后,一切正常。

http://static.springsource.org/spring/docs/1.1.5/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html说:

Default property values can be defined via "properties", to make overriding definitions in properties files optional. A configurer will also check against system properties (e.g. "user.dir") if it cannot resolve a placeholder with any of the specified properties. This can be customized via "systemPropertiesMode".

这是否设置了查找属性的顺序?我在哪里配置这个?

TIA,巴斯特尔。

最佳答案

对于第一个问题,您可以使用以下语法设置占位符的默认值,其中 9999 是默认值。

<property name="fileSizeLimit" value="${someProperty:9999}" />

对于第二个问题,属性 systemPropertiesModeName 确定解析属性的顺序(属性文件与系统属性)。例如,

<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>

告诉 PropertyPlaceholderConfigurer 在属性文件之前查看系统属性。

systemPropertiesModeName 的值为:

SYSTEM_PROPERTIES_MODE_FALLBACK (default)
Check system properties if not resolvable in the specified properties.
SYSTEM_PROPERTIES_MODE_NEVER
Never check system properties.
SYSTEM_PROPERTIES_MODE_OVERRIDE
Check system properties first, before trying the specified properties.

我通常在占位符中使用 SYSTEM_PROPERTIES_MODE_OVERRIDE 和默认值,因此顺序是

  1. 系统属性
  2. 属性文件
  3. 默认占位符

关于spring - Spring 中的 PropertyPlaceHolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8214862/

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