[SPRING] JAR의 PathMatchingResourcePatternResolver 및 URLClassloader를 사용하여 리소스 찾기
SPRINGJAR의 PathMatchingResourcePatternResolver 및 URLClassloader를 사용하여 리소스 찾기
URLClassloader를 사용하여 런타임에 동적으로로드되는 특정 파일 확장명으로 모든 리소스를로드하려고합니다.
불행히도 PathMatchingResourcePatternResolver는 classpath * : / *. myextension 패턴을 사용할 때 리소스를 반환하지 않습니다. classpath * : / test.myextension과 같은 완전한 이름의 파일을 지정하면 리소스가로드되므로 Classloader가 올바르게 구성되어 있다고 생각합니다.
URLClassloader classloader = new URLClassloader(jarURLs); // jarURLs look like "file:C:/Temp/test.jar"
Thread.getCurrentThread().setContextClassloader(classloader)
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(classloader);
Resource[] resources = resolver.getResources("classpath*:/*.myextension") // yields empty array
....
어떻게해야합니까? jars를 동적으로로드해야하고 사전에 리소스 이름을 모른다.
해결법
-
==============================
1.스프링에서 파일을 동적으로로드하는 것은 간단합니다. 확장자가있는 파일을 찾는 방법을 변경했습니다.
스프링에서 파일을 동적으로로드하는 것은 간단합니다. 확장자가있는 파일을 찾는 방법을 변경했습니다.
다음을 시도하십시오.
ClassLoader cl = this.getClass().getClassLoader(); ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(cl); Resource[] resources = resolver.getResources("classpath*:/*.xml") ; for (Resource resource: resources){ logger.info(resource.getFilename()); }
-
==============================
2.Tech Trip이 그의 대답에 대한 언급에서 언급했듯이 나는 나의 패턴에 오류가 있었다. 앤트 스타일 패턴과 결합 될 때 "classpath * :"는 패턴이 시작되기 전에 최소한 하나의 루트 디렉토리에서만 안정적으로 작동합니다 ... JDK의 ClassLoader.getResources ()
Tech Trip이 그의 대답에 대한 언급에서 언급했듯이 나는 나의 패턴에 오류가 있었다. 앤트 스타일 패턴과 결합 될 때 "classpath * :"는 패턴이 시작되기 전에 최소한 하나의 루트 디렉토리에서만 안정적으로 작동합니다 ... JDK의 ClassLoader.getResources ()
그래서 내 패턴을
classpath*/model/*.myextension
JAR은 xText-DSL에서 생성되므로 모델 폴더를 사용해야한다는 규칙을 시행해야합니다.
from https://stackoverflow.com/questions/25405167/finding-resources-with-pathmatchingresourcepatternresolver-and-urlclassloader-in by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 크론 대 보통 크론? (0) | 2019.01.16 |
---|---|
[SPRING] Spring @Value 주석은 항상 null로 평가됩니까? (0) | 2019.01.16 |
[SPRING] 더 이상 사용되지 않는 javax.persistence.spi.PersistenceProvider가 발생했습니다. (0) | 2019.01.15 |
[SPRING] Spring 문맥에 모의 삽입하기 [duplicate] (0) | 2019.01.15 |
[SPRING] 단계 정의 파일간에 동일한 셀레늄 WebDriver 공유 (0) | 2019.01.15 |