[SPRING] Spring : PropertyPlaceholderConfigurer가 속성 파일을 찾을 수 없습니다.
SPRINGSpring : PropertyPlaceholderConfigurer가 속성 파일을 찾을 수 없습니다.
PropertyPlaceholderConfigurer를 사용하는 Spring에 이상한 문제가 있습니다. 내 콩 중 하나는 다음과 같이 설계되었습니다.
<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");
문제없이 작동하고 파일을 찾습니다. 사실 나는 스프링 버그가 무엇인지 완전히 이해할 수 없습니다.
도와 주실 생각이 있으시면 미리 감사드립니다. 나는 봄에 경험이별로 없기 때문에 어딘가에서 실수를 저질렀을 것입니다.
[편집하다]
사실, 클래스 로더의 문제입니다. 만약 내가한다면 :
new ClassPathResource("jdbc.properties");
작동하지 않습니다. 하지만 :
new ClassPathResource("jdbc.properties",someClassIntheBundle.class.getClassLoader());
완벽하게 작동합니다.
나는 Spring이 내 번들에 의해 소비되는 자체 번들의 ClassLoader를 사용한다고 믿는다. 이 까다로운 문제를 해결할 방법을 알고 있습니까?
감사,
해결법
-
==============================
1.classpath *를 시도하십시오 : jdbc.properties
classpath *를 시도하십시오 : jdbc.properties
-
==============================
2.IANA OSGI 개발자이지만 빠른 Google 검색 결과는 Spring-osgi 문서로 연결됩니다. 5.4 절을보고 spring-osgi 패키지가 Resource loading에 약간의 변경을가한다는 것을 주목하라. osgi에 대한 기본 ApplicationContext에 의해 구현 된 ResourceLoader는 osgibundle을 자동으로 미리 보냅니다 : 다른 접두어가 제공되지 않는 경우입니다.
IANA OSGI 개발자이지만 빠른 Google 검색 결과는 Spring-osgi 문서로 연결됩니다. 5.4 절을보고 spring-osgi 패키지가 Resource loading에 약간의 변경을가한다는 것을 주목하라. osgi에 대한 기본 ApplicationContext에 의해 구현 된 ResourceLoader는 osgibundle을 자동으로 미리 보냅니다 : 다른 접두어가 제공되지 않는 경우입니다.
classpath :를 사용할 때 검색되는 경로와 classpath * :를 사용할 때 사용되는 경로 사이에 범위에 약간의 차이가있는 것처럼 보이지만 지금까지는 좋은 설명을 찾을 수 없었습니다.
from https://stackoverflow.com/questions/7191162/spring-propertyplaceholderconfigurer-cannot-find-property-file by cc-by-sa and MIT license