Java 无法将Spring上下文资源解析为url

Java 无法将Spring上下文资源解析为url,java,spring,Java,Spring,我有一个Spring的应用程序context.xml和覆盖它的custom context.xml。 在custom-config.xml中,我创建了这样一个bean <bean id="dir" class="org.springframework.core.io.ClassPathResource"> <constructor-arg value="${root.smth:}/WEB-INF/mySecretFolder/"/> </bean>

我有一个
Spring的应用程序context.xml
和覆盖它的
custom context.xml
。 在custom-config.xml中,我创建了这样一个bean

<bean id="dir" class="org.springframework.core.io.ClassPathResource">
    <constructor-arg value="${root.smth:}/WEB-INF/mySecretFolder/"/>
</bean>
 <bean id="secretBean" class="com.project.secret">
    <constructor-arg ref="dir"/>
</bean>
在构造函数中使用它,如下所示:

public someConstr(@Value("#{dirList[0]}" Resource dir)
...

为什么呢?为什么路径在我为其创建bean时无法解析,而在我将其放入列表时可以解析?是否因为列表的类型为
String

我认为您需要在custom-context.xml中定义属性占位符,请尝试添加以下内容:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>

PropertyPlaceHolderConfigure的功能是根据本地属性和/或系统属性和环境变量解析${…}占位符。
您可以参考Java

,它可能在解决资源构造函数中的路径时遇到问题。 也许这会奏效: 创建一个String类型的bean以包含解析的路径,然后按如下方式引用它:

<bean id="path" class="java.Lang.String"> <constructor-arg value="${root.smth:}/WEB-INF/mySecretFolder/"/> </bean>

<bean id="dir" class="org.springframework.core.io.ClassPathResource"> <constructor-arg ref=path/> </bean>


首先,列表类型为“java.lang.Spring”,这是打字错误吗?不,不是。它是这样工作的。可能是因为在资源类型参数中注入字符串时,解析方式不同?java.lang中没有Spring类。你可能是指java.lang.String。哦,对不起,我在写文章和阅读你的评论时可能有点粗心。你是对的。我搞定了,你能说得更具体些吗?它做什么以及如何帮助。我在我的笔记本电脑上试用过,在我添加了PropertyPlaceHolderConfigure之后它就可以工作了。我想Spring需要一些配置来解析字符串中的属性。我总是将这个配置程序添加到我的上下文xml中,所以我从来没有意识到spring可以在默认情况下进行解析;)。顺便说一句,我使用Spring4.1.1.release它创建了一个relaticURL,我怎样才能得到绝对值?
<bean id="path" class="java.Lang.String"> <constructor-arg value="${root.smth:}/WEB-INF/mySecretFolder/"/> </bean>

<bean id="dir" class="org.springframework.core.io.ClassPathResource"> <constructor-arg ref=path/> </bean>