在我的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配置)加载父类路径?
答案 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
可以在大多数情况下使用。