我对Spring使用PropertyPlaceholderConfigurer
有一个奇怪的问题。我的一个豆的设计如下:Spring:PropertyPlaceholderConfigurer找不到属性文件
<bean name="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
的问题是,春天永远找不到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");
它的工作没有任何问题,并找到该文件。其实我完全无法理解春天的错误。
如果您有任何想法来帮助我,请提前致谢。春天我不是很有经验,所以我可能在某个地方犯了一个错误。
[编辑]
事实上,它的类加载器的问题: 如果我做的:
new ClassPathResource("jdbc.properties");
这是行不通的。但是:
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
完美的作品。
我确实认为Spring使用自己捆绑包的ClassLoader被我的捆绑包使用。你知道解决这个棘手问题的方法吗?
感谢,
目前,我必须在我的配置文件中加入可怕的静态路径进行测试(如bundleresource://63.jhdjlzeo:2/jdbc.properties(它适用于它))。我还没有找到任何其他解决方案(参见其他评论infra) – ThR37