我在使用 Spring 时遇到一个奇怪的问题PropertyPlaceholderConfigurer
。我的一种豆子设计如下:
<bean name="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
问题是 spring 永远找不到 jdbc.properties (FileNotFoundException
)。该文件位于捆绑包类路径中名为“resources”的文件夹中(我正在 OSGi 项目中工作)。
我尝试了几乎所有组合(“jdbc.properties”,“/jdbc.properties”,“classpath:jdbc.properties”,“classpath:/jdbc.properties”,“/resources/jdbc.properties”等...... )但它永远不起作用。
作为信息,如果在某个时候,我会做类似的事情:
URL u = someClassLoader.getResource("jdbc.properties");
它确实可以正常工作并找到该文件。实际上我完全无法理解 spring 的错误是什么。
如果您有任何想法可以帮助我,请提前致谢。我对春天的经验不是很丰富,所以我可能在某个地方犯了错误。
[EDIT]
实际上,这是类加载器的问题:
如果我做 :
new ClassPathResource("jdbc.properties");
它不起作用。但 :
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
工作完美。
我确实相信 Spring 使用它自己的包的类加载器,该包由我的包消耗。你知道解决这个棘手问题的方法吗?
Thanks,