如何使用Spring 2.5.x访问父类路径上的资源?

时间:2010-06-24 13:57:42

标签: java spring classpath classloader

在我的Websphere Portal环境中,我正在尝试配置一个使用在WAR外部找到的资源的bean(它位于WAS的某些父类路径中)。 我确定它在那里因为我可以使用以下方法访问它:

URL url = getClass().getResource("/config/someProps.properties");

但是,在我的Spring applicationContext.xml中,以下内容不起作用:

<bean id="initBean" class="foo.PropInitializer">
    <constructor-arg value="classpath:/config/someProps.properties"/>   
</bean>

如果我删除“classpath:”,那也无济于事。

目前,我正在使用ContextLoaderListener加载Spring上下文,但似乎Spring无法访问/使用父类路径。

是否有办法(使用Spring配置)加载父类路径?

2 个答案:

答案 0 :(得分:0)

尝试传递classpath *:而不是classpath:

<bean id="initBean" class="foo.PropInitializer">
    <constructor-arg value="classpath*:/config/someProps.properties"/>   
</bean>

您可以找到更详细的解释here

答案 1 :(得分:0)

我设法(有点)解决了我的问题。

我最终创建了一个工厂类,可用于从类路径加载资源:

<bean name="applicationConfig" class="foo.io.ResourceLoader">
    <constructor-arg value="/config/someProps.properties" />
</bean>

这是基于现有的Spring类:org.springframework.core.io.ClassPathResource

不幸的是,Spring类在我的情况下并不起作用(我在将结果bean传递给的方法中遇到了一些属性歧义问题)这就是为什么我创建了自己的类,它返回了确切的类型。< / p>

无论如何,我希望使用弹簧ClassPathResource可以在大多数情况下使用。