Spring:PropertyPlaceholderConfigurer找不到属性文件
我使用PropertyPlaceholderConfigurer
对Spring有一个奇怪的问题。 我的一个豆子设计如下:
classpath:jdbc.properties
问题是spring永远不会找到jdbc.properties( FileNotFoundException
)。 该文件位于bundle classpath中的名为“resources”的文件夹中(我在OSGi项目中工作)。
我几乎尝试了所有组合(“jdbc.properties”,“/ jdbc.properties”,“classpath:jdbc.properties”,“classpath:/jdbc.properties”,“/ resources / jdbc.properties”等等… )但它永远不会奏效。
有关信息,如果在某些时候,我做的事情如下:
URL u = someClassLoader.getResource("jdbc.properties");
它确实工作没有任何问题,并找到该文件。 实际上我完全无法理解spring的错误是什么。
如果您有任何想法可以帮助我,请提前感谢。 我在spring不是很有经验,所以我可能在某处犯了一个错误。
[编辑]
实际上,这是类加载器的问题:如果我这样做:
new ClassPathResource("jdbc.properties");
它不起作用。 但是:
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
工作得很好。
我相信Spring使用我的bundle所使用的自己的bundle的ClassLoader。 你知道解决这个棘手问题的方法吗?
谢谢,
尝试classpath*:jdbc.properties
IANA OSGI开发人员,但快速的Google搜索会生成Spring-osgi文档的链接 。 查看5.4节并注意spring-osgi包对Resource
加载进行了一些更改。 看起来像osgi的默认ApplicationContext
实现的ResourceLoader
将自动预先挂起osgibundle:
如果没有提供其他前缀。
在使用classpath:
时搜索的classpath:
与使用classpath*:
时使用的classpath*:
之间的范围似乎有所不同,但到目前为止我还无法找到一个很好的解释。