java - 如何在 spring 应用程序上下文 xml 文件中调用带有几个参数的 java 方法

标签 java spring spring-mvc applicationcontext

我尝试配置我的 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/> 的解析器元素首先拆分 location 的值属性使用 StringUtils.commaDelimitedListToStringArray(String) .这就是将您的第二个位置一分为二的原因。

为了避免这种情况,您可以定义一个 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" />

关于java - 如何在 spring 应用程序上下文 xml 文件中调用带有几个参数的 java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468414/

相关文章:

java - 如何从特定点开始迭代二维数组?

java - 将配置属性转换为枚举值

java - springmvc使用json响应

java - 使用 Velocity 作为 OSGi 包时 ResourceManager 类不匹配

java - Android:无法在布局中使用动画 GIF。 (跟随指南)

java - 提供文件时未正确获取文件扩展名

spring - Jasypt 与 Hibernate 4 和 spring 3.1 集成

java - 无法在我的 Spring Web 应用程序中注入(inject) Activiti 框架服务

java - Spring boot集成mybstis如何通过向导初始化数据库

java - ArrayList越界错误