У меня есть странная проблема с Spring, используя PropertyPlaceholderConfigurer
. Один из моих бобов разработан следующим образом:Весна: PropertyPlaceholderConfigurer не могу найти файл свойства
<bean name="propertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
Проблема заключается в том, что весна никогда не найти jdbc.properties (FileNotFoundException
). Файл находится в папке с именем «resources», которая находится в пути класса bundle (я работаю в проекте OSGi).
Я пробовал почти каждую комбинацию («jdbc.properties», «/jdbc.properties», «classpath: jdbc.properties», «classpath: /jdbc.properties», «/resources/jdbc.properties», и т. д.), но он никогда не работает.
Для получения дополнительной информации, если в какой-то момент я сделать что-то вроде:
URL u = someClassLoader.getResource("jdbc.properties");
это делает работу без каких-либо проблем и найти файл. На самом деле я совершенно не понимаю, что такое ошибка с весной.
Если у вас есть идеи, чтобы помочь мне, заранее. Я не очень опытный весной, поэтому я, возможно, где-то ошибся.
[EDIT]
На самом деле, это проблема загрузчиком классов: Если я:
new ClassPathResource("jdbc.properties");
он не работает. Но:
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
работает отлично.
Я верю, что Spring использует ClassLoader своего собственного пакета, который потребляется моим пакетом. Знаете ли вы способ решить эту сложную проблему?
Спасибо,
На данный момент я должен положить ужасный статический путь в свой конфигурационный файл для тестирования (например, bundleresource: //63.jhdjlzeo: 2/jdbc.properties (он работает с ним)). Я не нашел другого решения (см. Другие комментарии ниже) – ThR37