gpt4 book ai didi

java - Spring属性配置语法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:39:36 25 4
gpt4 key购买 nike

我在 Spring XML 文件中遇到了一个奇怪的语法:

<bean id="mySessionFactory" class="my.thingy.session.SessionFactoryImpl">
<property name="myPropertyName">
<!-- WHAT IS THIS VALUE? -->
<value>${process.file.thing:propname.server}</value>
</property>
</bean>

我不熟悉 ${value1:value2} 占位符的语法 - 第一个值 value1 在那里做什么?它是类路径、包名称、文件夹名称还是什么?我已经搜索了对此的一些解释,但它显然没有记录(至少据我所知。)

最佳答案

I'm not familiar with the syntax of the ${value1:value2} placeholder

它是 Spring Expression Language 的 PropertySourcesPlaceholderConfigurer 回退值机制。 value2 用作 value1 的默认值。如果 value1 存在,它将被使用。否则,将使用 value2,在这种情况下,value2 只是一个文字。

${process.file.thing:propname.server}

在这种情况下,spring 首先尝试从其环境中解析名为 process.file.thing 的属性。如果成功,它将使用该值。否则,将使用 propname.server 文字。

PropertyPlaceholderHelperparseStringValue 方法负责解析默认值。这个方法看起来像这样:

String propVal = placeholderResolver.resolvePlaceholder(placeholder);
if (propVal == null && this.valueSeparator != null) {
int separatorIndex = placeholder.indexOf(this.valueSeparator);
if (separatorIndex != -1) {
String actualPlaceholder = placeholder.substring(0, separatorIndex);
String defaultValue = placeholder.substring(separatorIndex + this.valueSeparator.length());
propVal = placeholderResolver.resolvePlaceholder(actualPlaceholder);
if (propVal == null) {
propVal = defaultValue;
}
}
}

此功能已被描述 herePlaceholderConfigurerSupport 的 javadoc 中:

Default property values can be defined globally for each configurer instance via the properties property, or on a property-by-property basis using the default value separator which is ":" by default and customizable via setValueSeparator(String).

关于java - Spring属性配置语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35634432/

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