복붙노트

[SPRING] Spring : PropertyPlaceholderConfigurer가 속성 파일을 찾을 수 없습니다.

SPRING

Spring : 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. ==============================

    1.classpath *를 시도하십시오 : jdbc.properties

    classpath *를 시도하십시오 : jdbc.properties

  2. ==============================

    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 * :를 사용할 때 사용되는 경로 사이에 범위에 약간의 차이가있는 것처럼 보이지만 지금까지는 좋은 설명을 찾을 수 없었습니다.

  3. from https://stackoverflow.com/questions/7191162/spring-propertyplaceholderconfigurer-cannot-find-property-file by cc-by-sa and MIT license