Spring 4配置问题从v3迁移(util:属性位置不再评估spEL)

时间:2014-09-26 10:54:44

标签: java spring spring-mvc

我有一个工作的spring 3应用程序,在迁移到4.1.0.RELEASE之后开始引起问题。下面的配置停止工作:

<jee:jndi-lookup id="dit_properties_path" jndi-name="dit_properties_path" resource-ref="true" />
<util:properties id="systemProperties" location="classpath:system.properties" />
<util:properties id="serverProperties" location="#{dit_properties_path}"/>

迁移后,似乎spring无法解析spEL #{dit_properties_path},并显示以下错误:

[PropertiesFactoryBean] [INFO]:    Loading properties file from ServletContext resource [/#{dit_properties_path}]
[...]is java.io.FileNotFoundException: Could not open ServletContext resource [/#{dit_properties_path}]

Jndi资源的类型为java.lang.String,并指向本地FS(C:\ someFile.properties)。 这是资源/服务器和context /的tomcat定义:

    <Environment name="dit_properties_path" value="file:C:\someFile.properties"
     type="java.lang.String" override="true"/>

<ResourceLink name="dit_properties_path" 
    type="java.lang.String" 
    global="dit_properties_path" />

有谁知道如何解决这个问题? 我的应用程序中有几个属性文件,通常由#{propertyFileId['key']}访问,并且必须从jndi资源路径动态加载。

1 个答案:

答案 0 :(得分:0)

更改自:

<util:properties id="serverProperties" location="#{dit_properties_path}"/>

为:

<util:properties id="serverProperties" location="${dit_properties_path}"/>

解决了这个问题。但是,无法弄清楚为什么给定的表达式不能用哈希符号。