如何使用 spring 应用上下文 xml 文件中的一些参数调用 java 方法

How to invoke java method with a few parameters inside spring app context xml file

我尝试配置我的 spring 应用程序。 我需要像这样定义 属性 占位符:

<context:property-placeholder
        location="classpath:ov.properties,file:#{appServerUrl.replaceFirst('regexp','')}/test.properties"
        ignore-resource-not-found="true" />

但结果是 org.springframework.expression.ParseException: Expression 'file:#{appServerUrl.replaceFirst(''' @ 5: No ending suffix '}' for expression starting at character 5 如果我仅使用一个参数或不使用参数调用 java 方法,它都可以正常工作。怎么了?谢谢回复。

<context:property-placeholder/> 元素的解析器首先使用 StringUtils.commaDelimitedListToStringArray(String) 拆分 location 属性的值。这就是为什么将您的第二个位置一分为二的原因。

为了避免这种情况,您可以使用第二个位置的值定义一个 String bean:

<bean name="testPropertiesLocation" class="java.lang.String">
    <constructor-arg value="file:#{appServerUrl.replaceFirst('regexp','')}/test.properties" />
</bean>

然后像这样使用它:

<context:property-placeholder
        location="classpath:ov.properties,#{testPropertiesLocation}"
        ignore-resource-not-found="true" />